Ich möchte ein Bootstrapper-Playbook für neue Maschinen in Ansible schreiben, das die Netzwerkeinstellungen neu konfiguriert. Zum Zeitpunkt der ersten Ausführung haben Zielrechner eine DHCP-Adresse.
Der Benutzer, der das Playbook ausführen soll, kennt die zugewiesene IP-Adresse eines neuen Rechners. Ich möchte den Benutzer nach Wert fragen.
Das Modul%code% ermöglicht die Eingabe vom Benutzer, ist jedoch unter %code% definiert und verhindert so effektiv, dass die Hostadresse als erforderlicher Wert verwendet wird.
Ist es möglich, ohne ein Wrapper-Script zu verwenden, das die Inventardatei ändert?
Sie könnten es stattdessen mit %code% übergeben .
Machen Sie einfach Ihre %code% -Abschnitt eine Variable wie %code% und übergeben Sie den Host dann in der Befehlszeile wie folgt:
%Vor%Wenn Sie den Standardspeicherort für Bestandslisten von %code% verwenden, können Sie einfach Folgendes verwenden:
%Vor%Haftungsausschluss: Die akzeptierte Antwort bietet die beste Lösung für das Problem. Während dieser arbeitet, basiert es auf einem Hack und ich lasse es als eine Referenz.
Ich fand heraus, dass es möglich war, einen derzeit undokumentierten Hack zu verwenden (Guthaben < a href="https://StackOverflow.com/a/33334963/2947502"> Bruce P , um mich auf den Beitrag aufmerksam zu machen), der den Wert des Parameters %code% / %code% in eine Ad-hoc-Liste umwandelt von Hosts ( Referenz ). Mit nur dem Hostnamen / der IP-Adresse und einem nachgestellten Leerzeichen (wie unten) bezieht es sich auf einen einzelnen Host, ohne dass die Inventardatei existieren muss.
Befehl:
%Vor%Und dementsprechend kann %code% gegen alle Hosts ausgeführt werden (was im obigen Beispiel einem einzelnen Host %code% entspricht):
%Vor%Die Liste enthält möglicherweise mehr als eine IP-Adresse %code%
Der richtige Weg dazu besteht darin, einen dynamischen Host mit add_host zu erstellen und ihn in eine neue Gruppe zu legen und dann ein neues Spiel zu starten, das auf diese Gruppe zielt. Auf diese Weise können Sie, wenn Sie andere Verbindungsvariablen haben, die im Voraus gesetzt werden müssen (Anmeldeinformationen / Schlüssel / etc), diese in einer leeren Gruppe im Inventar festlegen und dann den Host dynamisch hinzufügen. Zum Beispiel:
%Vor%Hinzufügen zu Matts Antwort für mehrere Hosts.
Eingabebeispiel wäre %code%
%Vor%