Variable de lancement mondial disponible

Je veux créer un groupe de serveurs en utilisant ansible.

Dans un livre principal, j'ai inclus plusieurs livres supplémentaires.

- include: playbook_commandserver.yml
- include: playbook_agent.yml

DANS playbook_commandserver.yml Je crée un serveur de commande (sur aws). Alors je commence le rôle qui utilise

set_fact

Module pour mémoriser le nom DNS du serveur de commande:

- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s [url=http://ipecho.net/plai]http://ipecho.net/plai[/url]n) | /usr/bin/awk '{print $5}' | /usr/bin/awk -F 'aws.com' '{print $1"aws.com"}'
register: cs
- name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"

DANS

commandserver

Le fait est disponible dans le même jeu, mais pas dans le même livre. ... pas parler de

playbook_agent.yml

, qui sera alors inclus. Et c'est exactement là où j'aurais besoin d'accéder à ce fait du serveur de commandes.

Alors comment installer / Enregistrer des variables valides pour le début complet ansible?

Je l'ai trouvé:
https://stackoverflow.com/ques ... -file
Cependant, il me semble que le piratage laid.

Pas de meilleure solution à ce problème? Il n'y a aucun moyen de définir une variable valide pour tous les courses ansible?
Invité:

Emilie

Confirmation de:

Oui c'est possible. Lorsque vous installez le fait avec
http://docs.ansible.com/ansibl ... .html
Module, ce fait est disponible à travers hostvars. Donc, si vous définissez vos variables de serveur de commande comme suit:

  - name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"

Ensuite, vous pouvez accéder à cette variable dans d'autres plaques sur le même jeu. (Module de débogage - C'est juste un exemple):

  - debug: msg="{{ hostvars['put the hostname in here']['commandserver'] }}"

Pour répondre aux questions, connectez-vous ou registre