Ich erstelle ein Ansible-Spielbuch, um ein paar Server einzurichten. Es gibt einige Aufgaben, die ich nur ausführen möchte, wenn der aktuelle Host mein lokaler dev-Host ist und in meiner Hostdatei "local" heißt. Wie kann ich das machen? Ich kann es nirgendwo in der Dokumentation finden.
Ich habe diese when-Anweisung ausprobiert, sie schlägt jedoch fehl, da ansible_hostname
in den Host-Namen aufgelöst wird, der beim Erstellen des Computers generiert wird, und nicht den in Ihrer hosts-Datei definierten Namen.
- name: Install this only for local dev machine
pip: name=pyramid
when: ansible_hostname == "local"
Die notwendige Variable ist inventory_hostname
.
- name: Install this only for local dev machine
pip: name=pyramid
when: inventory_hostname == "local"
Es ist etwas versteckt in der Dokumentation am Ende dieses Abschnitts .
Sie können den Umfang eines Playbooks einschränken, indem Sie den Host-Header in seinen Spielen ändern, ohne sich auf Ihr spezielles Host-Label "local" in Ihrem Inventar zu verlassen. Localhost benötigt keine spezielle Zeile in den Lagerbeständen.
- name: run on all except localhost
hosts: all:!localhost
Dies ist eine Alternative:
- name: Install this only for local dev machine
pip: name=pyramid
delegate_to: localhost