Je veux créer un cluster de serveurs, en utilisant ansible.
Dans un playbook principal, j'inclus quelques sous-playbooks.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
Dans le playbook_commandserver.yml, je crée le serveur de commandes (sur aws). Ensuite, je déclenche un rôle, qui utilise le set_fact
module pour se souvenir du nom DNS du serveur de commandes:
- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s http://ipecho.net/plain) | /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 }}"
Le commandserver
fait est disponible dans le même jeu, mais pas dans le même livre de jeu .. et encore moins dans le playbook_agent.yml
, qui est inclus, après. Et c'est exactement là, où j'aurais besoin d'accéder à ce fait de serveur de commande.
Alors, comment définit-on / stocke-t-on des variables qui sont valables pour la totalité du cycle ansible?
J'ai trouvé ceci: /programming/26732241/ansible-save-registered-variable-to-file Cependant pour moi, cela ressemble à un vilain hack.
N'y a-t-il pas une meilleure solution à ce problème? N'y a-t-il aucun moyen de définir une variable valable pour l'ensemble de la course ansible?
la source