Quiero crear un grupo de servidores, usando ansible.
En un libro de jugadas principal, incluyo algunos libros de jugadas secundarias.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
En el playbook_commandserver.yml, creo el servidor de comandos (en aws). Luego, disparo un rol, que usa el set_fact
módulo para recordar el nombre dns del 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 }}"
El commandserver
hecho está disponible en el mismo juego, pero no en el mismo libro de jugadas ... y mucho menos en el playbook_agent.yml
que se incluye después. Y es exactamente allí, donde necesitaría acceder a ese hecho de servidor de comandos.
Entonces, ¿cómo se establecen / almacenan variables que son válidas para la ejecución completa de ansible?
He encontrado esto: /programming/26732241/ansible-save-registered-variable-to-file Sin embargo, para mí esto parece un truco feo.
¿No hay una mejor solución para este problema? ¿No hay forma de establecer una variable que sea válida para toda la ejecución de ansible?