wait_for – Ожидание условия перед продолжением
Описание
- Вы можете ожидать определённое количество времени
timeout, это значение по умолчанию, если ничего не указано или указано толькоtimeout. Это не приводит к ошибке. - Ожидание готовности порта полезно, когда службы не становятся доступными сразу после возвращения их скриптов инициализации, что характерно для некоторых Java-приложений.
- Это также полезно при запуске гостей с модулем virt и необходимости приостановить выполнение, пока они не будут готовы.
- Этот модуль также можно использовать для ожидания совпадения регулярного выражения со строкой, присутствующей в файле.
- В Ansible 1.6 и более поздних версиях этот модуль также можно использовать для ожидания наличия или отсутствия файла в файловой системе.
- В Ansible 1.8 и более поздних версиях этот модуль также можно использовать для ожидания закрытия активных соединений перед продолжением, что полезно, если узел выводится из пула балансировщиков нагрузки.
- Для целевых систем Windows используйте модуль win_wait_for вместо этого.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| active_connection_states список добавлено в 2.3 | По умолчанию: ["ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "SYN_RECV", "SYN_SENT", "TIME_WAIT"] | Список состояний TCP-соединений, которые считаются активными соединениями. |
| connect_timeout целое число | По умолчанию: 5 | Максимальное время ожидания установления соединения в секундах перед закрытием и повторной попыткой. |
| delay целое число | По умолчанию: 0 | Количество секунд ожидания перед началом проверки. |
| exclude_hosts список | Список хостов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния drained. | |
| host строка | По умолчанию: "127.0.0.1" | Разрешаемый хост или IP-адрес для ожидания. |
| msg строка добавлено в 2.4 | Это переопределяет стандартное сообщение об ошибке при отсутствии необходимых условий. | |
| path путь | Путь к файлу в файловой системе, который должен существовать перед продолжением. path и port — взаимно исключающие параметры. | |
| port целое число | Номер порта для проверки. path и port — взаимно исключающие параметры. | |
| search_regex строка | Можно использовать для поиска строки в файле или сокете. По умолчанию используется многострочный регулярный шаблон. | |
| sleep целое число добавлено в 2.3 | По умолчанию: 1 | Количество секунд ожидания между проверками. До Ansible 2.3 это значение было жёстко задано в 1 секунду. |
| state строка |
| Либо present, started, или stopped, absent, или drained.При проверке порта started гарантирует, что порт открыт, stopped проверит, что он закрыт, drained проверит активные соединения.При проверке файла или строки регулярного выражения present или started гарантирует, что файл или строка присутствуют перед продолжением, absent проверит, что файл отсутствует или удалён. |
| timeout целое число | По умолчанию: 300 | Максимальное время ожидания в секундах. При использовании с другими условиями это приведёт к ошибке. Без других условий это эквивалентно простому ожиданию. |
Примечания
Примечание
- Возможность использования search_regex с соединением по порту была добавлена в Ansible 1.7.
- До Ansible 2.4 проверка отсутствия каталога или UNIX-сокет не работала корректно.
- До Ansible 2.4 проверка наличия файла не работала корректно, если у удалённого пользователя не было прав на чтение этого файла.
- В некоторых случаях при использовании обязательного управления доступом путь может всегда считаться отсутствующим, даже если он существует, но не может быть изменён или создан удалённым пользователем.
- При ожидании пути символьные ссылки будут следовать. Многие другие модули, которые манипулируют файлами, не следуют символичным ссылкам, поэтому операции с путём, использующие другие модули, могут не работать так, как ожидается.
См. также
См. также
- wait_for_connection – Ожидание доступности удалённой системы
- Официальная документация модуля wait_for_connection.
- win_wait_for – Ожидание условия перед продолжением
- Официальная документация модуля win_wait_for.
- win_wait_for_process – Ожидание процесса перед продолжением
- Официальная документация модуля win_wait_for_process.
Примеры
- name: sleep for 300 seconds and continue with play
wait_for:
timeout: 300
delegate_to: localhost
- name: Wait for port 8000 to become open on the host, don't start checking for 10 seconds
wait_for:
port: 8000
delay: 10
- name: Waits 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 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 regex pattern matches in the file /tmp/foo and print the matched group
wait_for:
path: /tmp/foo
search_regex: completed (?P<task>\w+)
register: waitfor
- debug:
msg: Completed {{ waitfor['groupdict']['task'] }}
- 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
# 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
# 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
Возвращаемые значения
Общие значения возврата описаны здесь. Ниже приведены поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| elapsed целое число | всегда | Количество секунд, затраченное на ожидание Пример: 23 |
| match_groupdict словарь | всегда | Словарь, содержащий все именованные подгруппы совпадения, с ключами, соответствующими именам подгрупп, как возвращает https://docs.python.org/2/library/re.html#re.MatchObject.groupdict
Пример: {'group': 'match'} |
| match_groups список | всегда | Кортеж, содержащий все подгруппы совпадения, как возвращает https://docs.python.org/2/library/re.html#re.MatchObject.groups
Пример: ['match 1', 'match 2'] |
Статус
- Этот модуль гарантированно не будет иметь изменений интерфейса, несовместимых со старыми версиями, в будущем. [stableinterface]
- Этот модуль поддерживается командой Ansible Core. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля Red Hat см. в этой статье базы знаний 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.8/modules/wait_for_module.html