web-dev-qa-db-fra.com

Comment obtenir le nom d'hôte de la machine actuelle tel que défini dans le fichier d'hôtes Ansible?

Je suis en train de mettre en place un cahier de jeu Ansible pour mettre en place quelques serveurs. Je ne souhaite exécuter certaines tâches que si l'hôte actuel est mon hôte dev local, nommé "local" dans mon fichier hosts. Comment puis-je faire ceci? Je ne le trouve nulle part dans la documentation.

J'ai essayé cette instruction when, mais elle échoue car ansible_hostname est résolu en nom d'hôte généré lors de la création de la machine, pas avec celui que vous avez défini dans votre fichier hosts.

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

La variable nécessaire est inventory_hostname .

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

Il est un peu caché dans la documentation au bas de cette section .

245
Tanner Semerad

Vous pouvez limiter la portée d’un playbook en modifiant l’en-tête des hôtes dans ses parties sans vous fier à votre étiquette d’hôte spéciale «local» dans votre inventaire. Localhost n'a pas besoin d'une ligne spéciale dans les inventaires.

- name: run on all except localhost
  hosts: all:!localhost
0
bbaassssiiee

C'est une alternative:

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