Несчастные действия перед сбором фактов
Кто-нибудь знает, как что-то сделать (например, ждать порты/загрузки управляемых node), прежде чем собирать факты? Я знаю, что могу скрыть факты.
gather_facts: no
и THEN ждут порт, но что делать, если мне нужны факты, а еще нужно ждать, пока загрузится node?
Ответы
Ответ 1
Сбор фактов эквивалентен запуску setup
module. Вы можете вручную собрать факты, запустив их. Он не задокументирован, но просто добавляет задачу следующим образом:
- name: Gathering facts
setup:
В сочетании с gather_facts: no
на уровне плейеров факты будут получены только при выполнении выше задачи.
Ответ 2
Что-то вроде этого должно работать:
- hosts: my_hosts
gather_facts: no
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for port=22
- name: gather facts
setup:
- continue with my tasks...
Функция wait_for будет выполняться локально на вашем несущем узле, ожидая, что серверы ответят на порт 22, а затем установочный модуль выполнит сбор фактов, после чего вы сможете делать все, что вам нужно.
Ответ 3
Я пытался выяснить, как создать хост из ec2, дождаться появления ssh, а затем запустить мою игру против нее. Это в основном тот же вариант использования, что и у вас. Я закончил со следующим:
- name: Provision App Server from Amazon
hosts: localhost
gather_facts: False
tasks:
# #### call ec2 provisioning tasks here ####
- name: Add new instance to host group
add_host: hostname="{{item.private_ip}}" groupname="appServer"
with_items: ec2.instances
- name: Configure App Server
hosts: appServer
remote_user: ubuntu
gather_facts: True
tasks: ----configuration tasks here----
Я думаю, что эта сложная терминология состоит в том, что у меня две пьесы в книжке, каждая из которых работает с другой группой хостов (localhost и группой appServer).