wait_for - Ожидание условия перед продолжением
Описание
- Вы можете дождаться заданного времени
timeout, это значение по умолчанию, если ничего не указано или указано толькоtimeout. Это не приводит к ошибке. - Ожидание готовности порта полезно, когда службы не становятся доступными сразу после возврата их скриптов инициализации, что характерно для некоторых Java-серверов приложений. Это также полезно при запуске гостей с модулем virt, когда необходимо приостановить выполнение до их готовности.
- Этот модуль также может использоваться для ожидания совпадения регулярного выражения в строке, присутствующей в файле.
- В версиях 1.6 и более поздних этот модуль также может использоваться для ожидания наличия или отсутствия файла в файловой системе.
- В версиях 1.8 и более поздних этот модуль может также использоваться для ожидания закрытия активных подключений перед продолжением, что полезно, если узел выводится из пула балансировщиков нагрузки.
- Этот модуль также поддерживается для целей Windows.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| active_connection_states (добавлен в 2.3) | Значение по умолчанию: [u'ESTABLISHED', u'FIN_WAIT1', u'FIN_WAIT2', u'SYN_RECV', u'SYN_SENT', u'TIME_WAIT'] | Список состояний TCP-соединений, которые считаются активными подключениями. |
| connect_timeout | Значение по умолчанию: 5 | Максимальное время в секундах ожидания подключения перед закрытием и повторной попыткой. |
| delay | Значение по умолчанию: 0 | Количество секунд ожидания перед началом опроса. |
| exclude_hosts (добавлен в 1.8) | Список хостов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния drained. | |
| host | Значение по умолчанию: 127.0.0.1 | Резолвимый имя хоста или IP-адрес, для ожидания. |
| msg (добавлен в 2.4) | Значение по умолчанию: None | Это переопределяет стандартное сообщение об ошибке при невозможности выполнения требуемых условий. |
| 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 работала некорректно.
- До версии 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, что означает, что разработчики этого модуля гарантируют, что не будут вноситься обратные несовместимые изменения в интерфейс.
Поддержка
Для получения дополнительной информации о поддержке этого модуля 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.5/modules/wait_for_module.html