ansible.builtin.wait_for – Ожидание выполнения условия перед продолжением
Примечание
Этот модуль является частью ansible-base и включен во все установки Ansible. В большинстве случаев можно использовать короткое имя модуля wait_for даже без указания ключевого слова collections:. Несмотря на это, рекомендуется использовать полное имя класса (FQCN) для удобной ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Добавлен в версии 0.7: of ansible.builtin
Описание
- Можно дождаться определённого количества времени
timeout, это значение по умолчанию, если ничего не указано или указано толькоtimeout. Это не приводит к ошибке. - Ожидание готовности порта полезно в тех случаях, когда службы не становятся доступными сразу после возврата их скриптов инициализации, что характерно для некоторых серверов приложений Java.
- Он также полезен при запуске гостевых операционных систем с модулем community.libvirt.virt и необходимости приостановить выполнение, пока они не будут готовы.
- Этот модуль также можно использовать для ожидания совпадения регулярного выражения со строкой в файле.
- В Ansible 1.6 и более поздних версиях этот модуль также можно использовать для ожидания наличия или отсутствия файла в файловой системе.
- В Ansible 1.8 и более поздних версиях этот модуль также можно использовать для ожидания закрытия активных соединений перед продолжением, что полезно, если узел выводится из пула балансировщиков нагрузки.
- Для целей Windows используйте модуль ansible.windows.win_wait_for вместо этого.
Параметры
| Параметр | Выборы/Значения по умолчанию | Комментарии |
|---|---|---|
| active_connection_states список / элементы=строка добавлен в версии 2.3 of ansible.builtin | По умолчанию: ["ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "SYN_RECV", "SYN_SENT", "TIME_WAIT"] | Список состояний TCP-соединения, которые считаются активными соединениями. |
| connect_timeout целое число | По умолчанию: 5 | Максимальное время ожидания установления соединения в секундах перед закрытием и повторной попыткой. |
| delay целое число | По умолчанию: 0 | Количество секунд ожидания перед началом опроса. |
| exclude_hosts список / элементы=строка добавлен в версии 1.8 of ansible.builtin | Список узлов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния drained. | |
| host строка | По умолчанию: "127.0.0.1" | Разрешимое имя хоста или IP-адрес для ожидания. |
| msg строка добавлен в версии 2.4 of ansible.builtin | Заменяет стандартное сообщение об ошибке при невозможности выполнения требуемых условий. | |
| path путь добавлен в версии 1.4 of ansible.builtin | Путь к файлу в файловой системе, который должен существовать перед продолжением. path и port — взаимно исключающие параметры. | |
| port целое число | Номер порта для опроса. path и port — взаимно исключающие параметры. | |
| search_regex строка добавлен в версии 1.4 of ansible.builtin | Может использоваться для сопоставления строки в файле или соединении сокета. По умолчанию используется многострочное регулярное выражение. | |
| sleep целое число добавлен в версии 2.3 of ansible.builtin | По умолчанию: 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 проверка наличия файла работала неправильно, если у удалённого пользователя не было прав на чтение этого файла.
- В некоторых случаях при использовании обязательного управления доступом путь может всегда рассматриваться как отсутствующий, даже если он существует, но удалённый пользователь не может его ни изменить, ни создать.
- При ожидании пути символьные ссылки будут следовать за ними. Многие другие модули, манипулирующие файлами, не следуют за символьными ссылками, поэтому операции с путём, используя другие модули, могут работать не так, как ожидается.
См. также
См. также
- ansible.builtin.wait_for_connection
-
Официальная документация модуля ansible.builtin.wait_for_connection.
- ansible.windows.win_wait_for
-
Официальная документация модуля ansible.windows.win_wait_for.
- community.windows.win_wait_for_process
-
Официальная документация модуля community.windows.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['match_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'] |
Авторы
- Jeroen Hoekx (@jhoekx)
- John Jarvis (@jarv)
- Andrii Radyk (@AnderEnder)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/wait_for_module.html