Я хочу создать кластер серверов, используя ansible.
В одну главную книгу игр я включил несколько дополнительных книг.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
В playbook_commandserver.yml я создаю сервер команд (на aws). Затем я запускаю роль, которая использует set_fact
модуль для запоминания имени DNS командного сервера:
- 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 }}"
commandserver
Факт доступен в одной и той же игре, но не в том же сборника пьес .. не говоря уже в playbook_agent.yml
, который получает включены, после этого. И это именно там, где мне нужно было бы получить доступ к факту командного сервера.
Так как же установить / сохранить переменные, которые действительны для полного запуска?
Я нашел это: /programming/26732241/ansible-save-registered-variable-to-file Однако для меня это выглядит как уродливый хак.
Нет ли лучшего решения этой проблемы? Нет ли способа установить переменную, которая действительна для всего цикла запуска?
источник