Wie erhalte ich den Hostnamen des aktuellen Computers, wie in der Ansible-Hosts-Datei definiert?

166

Ich richte ein Ansible-Playbook ein, um ein paar Server einzurichten. Es gibt einige Aufgaben, die ich nur ausführen möchte, wenn der aktuelle Host mein lokaler Entwicklerhost mit dem Namen "local" in meiner Hosts-Datei ist. Wie kann ich das machen? Ich kann es nirgendwo in der Dokumentation finden.

Ich habe diese when-Anweisung versucht, aber sie schlägt fehl, weil sie ansible_hostnamein den Hostnamen aufgelöst wird, der beim Erstellen des Computers generiert wurde, und nicht in den Namen, den Sie in Ihrer Hosts-Datei definiert haben.

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"
Tanner Semerad
quelle

Antworten:

271

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 .

Tanner Semerad
quelle
2

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 verlassen zu müssen. Localhost benötigt keine spezielle Zeile in den Lagerbeständen.

- name: run on all except local
  hosts: all:!local
bbaassssiiee
quelle
hosts: !localhostfunktioniert wahrscheinlich auch als zB --limit '!dev'funktioniert
timdiels
0

Dies ist eine Alternative:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
bbaassssiiee
quelle