Eu quero criar um cluster de servidores, usando ansible.
Em um manual principal, incluo alguns sub-manuais.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
No playbook_commandserver.yml, crio o comando-server (em aws). Em seguida, aciono uma função, que usa o set_fact
módulo para lembrar o nome do DNS do servidor de comandos:
- 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 }}"
O commandserver
fato está disponível na mesma peça, mas não na mesma cartilha. E muito menos na playbook_agent.yml
, que é incluída depois. E é exatamente lá, onde eu precisaria acessar esse fato do servidor de comandos.
Então, como um conjunto / armazena variáveis válidas para a execução completa do ansible?
Eu encontrei isso: /programming/26732241/ansible-save-registered-variable-to-file No entanto, para mim, isso parece um truque feio.
Não existe melhor solução para esse problema? Não há como definir uma variável que seja válida para toda a execução ansible?