Voglio creare un cluster di server, usando ansible.
In un libro principale, includo alcuni libri secondari.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
In playbook_commandserver.yml, creo il command-server (su aws). Quindi, innesco un ruolo, che utilizza il set_fact
modulo per ricordare il nome DNS del server dei comandi:
- 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 }}"
Il commandserver
fatto è disponibile nella stessa giocata, ma non nello stesso playbook .. figuriamoci nel playbook_agent.yml
, che viene incluso, in seguito. Ed è esattamente lì, dove avrei bisogno di accedere a quel command server-fact.
Quindi, come si possono impostare / archiviare le variabili, che sono valide per l'intero ciclo di risposta?
Ho trovato questo: /programming/26732241/ansible-save-registered-variable-to-file Comunque per me questo sembra un brutto hack.
Non esiste una soluzione migliore a questo problema? Non c'è modo di impostare una variabile valida per l'intera sequenza di risposte?