Eu quero criar um cluster de servidores, usando ansible.
Em um dos principais livros, incluo alguns sub-playbooks.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
No playbook_commandserver.yml, eu crio o servidor de comando (em aws).
Então, eu disparo uma função, que usa o módulo set_fact
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
fact está disponível no mesmo jogo, mas não no mesmo manual. e muito menos no playbook_agent.yml
, que é incluído posteriormente. E é exatamente lá, onde eu precisaria acessar esse fato do servidor de comandos.
Então, como um set / store variáveis, que são válidas para o ansible-run completo?
Eu encontrei isto:
link
No entanto, para mim isso parece um hack feio.
Não há melhor solução para este problema?
Não há como definir uma variável, que é válida para todo o ansible-run?