Jak uzyskać nazwę hosta bieżącej maszyny zgodnie z definicją w pliku hostów Ansible?

166

Konfiguruję Playbook Ansible, aby skonfigurować kilka serwerów. Jest kilka zadań, które chcę wykonać tylko wtedy, gdy bieżący host jest moim lokalnym hostem deweloperskim o nazwie „local” w moim pliku hosts. W jaki sposób mogę to zrobić? Nie mogę znaleźć tego nigdzie w dokumentacji.

Wypróbowałem tę instrukcję when, ale kończy się niepowodzeniem, ponieważ ansible_hostnamejest to nazwa hosta wygenerowana podczas tworzenia maszyny, a nie ta, którą zdefiniujesz w pliku hosts.

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"
Tanner Semerad
źródło

Odpowiedzi:

271

Niezbędną zmienną jest inventory_hostname.

- name: Install this only for local dev machine
  pip: name=pyramid
  when: inventory_hostname == "local"

Jest nieco ukryty w dokumentacji na dole tej sekcji .

Tanner Semerad
źródło
2

Możesz ograniczyć zakres playbooka, zmieniając nagłówek hostów w jego odtworzeniach bez polegania na specjalnej etykiecie hosta „lokalnie” w ekwipunku. Lokalny host nie potrzebuje specjalnego wiersza w spisach.

- name: run on all except local
  hosts: all:!local
bbaassssiiee
źródło
hosts: !localhostprawdopodobnie też działa jak np. --limit '!dev'działa
timdiels
0

To jest alternatywa:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
bbaassssiiee
źródło