ansible-inventory

___ qstntxt ___

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?

    
___ answer33119259 ___

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%     
___ qstnhdr ___ Wie wird der Benutzer in Ansible aufgefordert, einen Zielhost anzugeben? ___ tag123ansible ___ Ansible ist ein modellgesteuertes Konfigurationsmanagement, Mehrknoten-Deployment / Orchestrierung und Remote-Task-Ausführungssystem. Standardmäßig wird SSH verwendet, sodass keine spezielle Software auf den von Ihnen verwalteten Knoten installiert werden muss. Ansible kann in jeder Sprache erweitert werden. ___ answer33348068 ___

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%

    
___ tag123ansibleInventory ___ Verwenden Sie dieses Tag für Fragen zum Ansible-Inventar, das entweder als statische Datei (aka-Hosts-Datei) oder dynamisch über externe Skripts (z. B. AWS EC2-Inventar) definiert ist. ___ answer36605054 ___

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%     
___ answer46409422 ___

Hinzufügen zu Matts Antwort für mehrere Hosts.

Eingabebeispiel wäre %code%

%Vor%     
___
4
Antworten

Wie wird der Benutzer in Ansible aufgefordert, einen Zielhost anzugeben?

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 so...
14.10.2015, 07:23