wait_for - Ожидание выполнения условия перед продолжением
Обзор
- Вы можете дождаться определённого промежутка времени
timeout, это значение по умолчанию, если не указано ничего или указано толькоtimeout. Это не приводит к ошибке. - Ожидание, пока порт станет доступным, полезно в ситуациях, когда службы не становятся доступными сразу после возвращения их скриптов инициализации, что характерно для определённых Java-приложений серверов. Это также полезно при запуске гостей с модулем virt и необходимости приостановить процесс, пока они не будут готовы.
- Этот модуль также может использоваться для ожидания совпадения регулярного выражения со строкой, присутствующей в файле.
- В версиях 1.6 и выше этот модуль также может использоваться для ожидания доступности или отсутствия файла в файловой системе.
- В версиях 1.8 и выше этот модуль также может использоваться для ожидания закрытия активных подключений перед продолжением, что полезно, если узел выводится из пула балансировщиков нагрузки.
- Этот модуль также поддерживается для целевых систем Windows.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| active_connection_states (добавлен в 2.3) | Значение по умолчанию: ["ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "SYN_RECV", "SYN_SENT", "TIME_WAIT"] | Список состояний TCP-соединений, которые считаются активными соединениями. |
| connect_timeout | Значение по умолчанию: 5 | Максимальное время ожидания подключения в секундах перед закрытием и повторной попыткой. |
| delay | Значение по умолчанию: 0 | Количество секунд ожидания перед началом опроса. |
| exclude_hosts (добавлен в 1.8) | Список хостов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния drained. | |
| host | Значение по умолчанию: "127.0.0.1" | Разрешаемый хост или IP-адрес для ожидания. |
| msg (добавлен в 2.4) | Переопределяет стандартное сообщение об ошибке при невозможности выполнения необходимых условий. | |
| path (добавлен в 1.4) | Путь к файлу в файловой системе, который должен существовать перед продолжением. | |
| port | Номер порта для опроса. | |
| search_regex (добавлен в 1.4) | Может использоваться для поиска строки в файле или сокете. По умолчанию используется многострочное регулярное выражение. | |
| sleep (добавлен в 2.3) | Значение по умолчанию: 1 | Количество секунд ожидания между проверками. До версии 2.3 это значение было жёстко задано равным 1 секунде. |
| state |
| Либо present, started, или stopped, absent, или drained. При проверке порта started гарантирует, что порт открыт, stopped проверяет, что он закрыт, а drained проверяет активные подключения.При проверке файла или строки present или started гарантирует наличие файла или строки перед продолжением, а absent проверяет отсутствие файла. |
| timeout | Значение по умолчанию: 300 | Максимальное время ожидания в секундах. При использовании с другими условиями приводит к ошибке. Без других условий эквивалентно простому ожиданию. |
Примечания
Примечание
- Возможность использования search_regex с подключением к порту была добавлена в 1.7.
- До версии 2.4 проверка отсутствия каталога или UNIX-сокетa не работала корректно.
- До версии 2.4 проверка наличия файла не работала корректно, если удалённый пользователь не имел права доступа на чтение файла.
- В некоторых случаях при использовании обязательного контроля доступа путь может всегда рассматриваться как отсутствующий, даже если он существует, но не может быть изменён или создан удалённым пользователем.
- При ожидании пути символические ссылки будут отслеживаться. Многие другие модули, которые обрабатывают файлы, не отслеживают символические ссылки, поэтому операции с путём, использующие другие модули, могут не работать так, как ожидается.
- Этот модуль также поддерживается для целевых систем Windows.
- См. также wait_for_connection
Примеры
- name: sleep for 300 seconds and continue with play
wait_for: timeout=300
delegate_to: localhost
- name: Wait 300 seconds for port 8000 to become open on the host, don't start checking for 10 seconds
wait_for:
port: 8000
delay: 10
- name: Wait 300 seconds for port 8000 of any IP to close active connections, don't start checking for 10 seconds
wait_for:
host: 0.0.0.0
port: 8000
delay: 10
state: drained
- name: Wait 300 seconds for port 8000 of any IP to close active connections, ignoring connections for specified hosts
wait_for:
host: 0.0.0.0
port: 8000
state: drained
exclude_hosts: 10.2.1.2,10.2.1.3
- name: Wait until the file /tmp/foo is present before continuing
wait_for:
path: /tmp/foo
- name: Wait until the string "completed" is in the file /tmp/foo before continuing
wait_for:
path: /tmp/foo
search_regex: completed
- name: Wait until the lock file is removed
wait_for:
path: /var/lock/file.lock
state: absent
- name: Wait until the process is finished and pid was destroyed
wait_for:
path: /proc/3466/status
state: absent
- name: Output customized message when failed
wait_for:
path: /tmp/foo
state: present
msg: Timeout to find file /tmp/foo
# Don't 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
# Same as above but you normally have ansible_connection set in inventory, which overrides 'connection'
- 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
vars:
ansible_connection: local
Статус
Этот модуль помечен как stableinterface, что означает, что авторы модуля гарантируют, что не будет внесено обратной совместимости с интерфейсом.
Техническое обслуживание
Этот модуль помечен как core, что означает, что его поддерживает Команда ядра Ansible. См. Поддержка модулей и техническое обслуживание для получения дополнительной информации.
Список других модулей, поддерживаемых командой ядра Ansible, см. в здесь.
Поддержка
Дополнительную информацию о поддержке этого модуля Red Hat см. в этой статье базы знаний
Автор
- Jeroen Hoekx (@jhoekx)
- John Jarvis (@jarv)
- Andrii Radyk (@AnderEnder)
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/wait_for_module.html