Как получить имя хоста текущего компьютера, как определено в файле Ansible hosts?

166

Я настраиваю Ansible playbook, чтобы настроить пару серверов. Есть пара задач, которые я хочу запускать только в том случае, если текущим хостом является мой локальный dev-хост, названный «local» в моем файле hosts. Как я могу это сделать? Я не могу найти это нигде в документации.

Я пробовал это, когда утверждение, но это терпит неудачу, потому что ansible_hostnameпреобразуется в имя хоста, созданное при создании машины, а не то, которое вы определяете в файле hosts.

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"
Таннер Семерад
источник

Ответы:

2

Вы можете ограничить область действия playbook, изменив заголовок hosts в его пьесах, не полагаясь на свой специальный ярлык host 'local' в своем инвентаре. Локальный хост не нуждается в специальной строке в инвентаризации.

- name: run on all except local
  hosts: all:!local
bbaassssiiee
источник
hosts: !localhostвероятно, тоже работает, как, например, --limit '!dev'работает
Timdiels
0

Это альтернатива:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
bbaassssiiee
источник