Несчастные действия перед сбором фактов

Кто-нибудь знает, как что-то сделать (например, ждать порты/загрузки управляемых 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).