Вам необходимо передать задачу wait_for
контроллеру Ansible :
- name: Adding delay for system to come up
wait_for:
timeout: 300
delegate_to: localhost
В противном случае задача wait_for
должна быть выполнено на цели , которая недоступна, так как перезагружается. Это модуль общего пользования, который служит многим целям. Иногда имеет смысл использовать удаленно, а иногда нет.
С другой стороны, можно предпочесть выполнение сборника пьес локально, в конечном итоге делегируя задачи целевым объектам. Это решение может быть обусловлено тем, сколько задач должно быть выполнено локально, а сколько нет:
- name: Check for require reboot
hosts: "{{ target_host }}"
remote_user: root
gather_facts: False
connection: local
tasks:
...
Обратите внимание, что локальное выполнение не имеет никакого отношения к целевым хостам, инвентарю и т. Д. c., как они все равно повторяются. Вы можете обратиться к целому списку целей только с помощью локальных исполнений (например, модули vmWare , которые выполняются на контроллере и создают диски на объектах инвентаризации).
Из Ansible Документы по wait_for
модулю , вы можете реально улучшить условия ожидания, указав c s sh подключения (значение по умолчанию "timeout" 300 с):
# Do not assume the inventory_hostname is resolvable and delay 10 seconds at start
- name: Wait 300 seconds for port 22 to become open and contain "OpenSSH"
wait_for:
port: 22
host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}'
search_regex: OpenSSH
delay: 10
connection: local
Или используйте для этого указанный модуль c wait_for_connection
:
# Wake desktops, wait for them to become ready and continue playbook
- hosts: all
gather_facts: no
tasks:
- name: Send magic Wake-On-Lan packet to turn on individual systems
wakeonlan:
mac: '{{ mac }}'
broadcast: 192.168.0.255
delegate_to: localhost
- name: Wait for system to become reachable
wait_for_connection:
- name: Gather facts for first time
setup:
...
Обратите внимание на первое задание, выполненное локально, поскольку цели еще не доступны, но назначение для пакетов c magi.
После этого нет необходимости делегировать задачу wait_for_connection
, , потому что она построена таким образом .