Модуль ansible.builtin.wait_for — ожидает выполнения условия, прежде чем продолжить
Примечание
Этот модуль входит в состав ansible-core и включен во все установки Ansible. В большинстве случаев можно использовать краткое имя модуля wait_for, даже не указывая ключевое слово collections. Однако мы рекомендуем использовать полное имя коллекции (FQCN) ansible.builtin.wait_for, чтобы упростить переход к документации модуля и избежать конфликтов с другими коллекциями, в которых может быть модуль с таким же именем.
Общие сведения
- Можно подождать заданное количество времени
timeout; это поведение по умолчанию, если ничего не указано или указан только параметрtimeout. Это не приводит к ошибке. - Ожидание доступности порта полезно, когда службы становятся доступными не сразу после завершения работы их сценариев инициализации, что характерно для некоторых серверов приложений Java.
- Модуль также полезен при запуске гостевых систем с помощью модуля community.libvirt.virt, когда нужно дождаться их готовности.
- Этот модуль также можно использовать, чтобы дождаться появления в файле строки, соответствующей регулярному выражению.
- Начиная с Ansible 1.6, этот модуль также можно использовать, чтобы дождаться появления файла в файловой системе или его отсутствия.
- Начиная с Ansible 1.8, этот модуль также можно использовать, чтобы дождаться закрытия активных соединений, прежде чем продолжить. Это полезно, например, при выводе узла из пула балансировщика нагрузки.
- Для целевых систем Windows вместо этого используйте модуль ansible.windows.win_wait_for.
Параметры
Параметр | Комментарии |
|---|---|
active_connection_states list / elements=string | Список состояний TCP-соединений, которые считаются активными соединениями. По умолчанию: |
connect_timeout integer | Максимальное количество секунд ожидания установки соединения, по истечении которого соединение будет закрыто и предпринята новая попытка. По умолчанию: |
delay integer | Количество секунд ожидания перед началом опроса. По умолчанию: |
exclude_hosts list / elements=string | Список узлов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния |
host string | Имя узла, которое можно разрешить, или IP-адрес, доступности которого нужно дождаться. По умолчанию: |
msg string | Заменяет стандартное сообщение об ошибке, возникающей при невыполнении требуемых условий. |
path path | |
port integer | |
search_regex string | Можно использовать для поиска строки в файле или сокетном соединении. По умолчанию используется многострочное регулярное выражение. При поиске статической строки в системном журнале учитывайте, что Ansible по умолчанию записывает туда собственные действия. Дополнительную информацию см. в примечаниях и примерах. |
sleep integer | Количество секунд ожидания между проверками. До Ansible 2.3 это значение было жестко задано и составляло 1 секунду. По умолчанию: |
state string | Одно из значений: При проверке порта значение При проверке файла или поиске строки значения Варианты:
|
timeout integer | Максимальное время ожидания в секундах; при использовании с другим условием по его истечении будет вызвана ошибка. Если использовать без других условий, параметр эквивалентен простой задержке. По умолчанию: |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: нет | Модуль может работать в режиме check_mode и возвращать прогноз статуса изменений, не изменяя целевую систему. Если режим не поддерживается, действие будет пропущено. |
diff_mode | Поддержка: нет | В режиме diff возвращает сведения об изменениях (или о том, что, возможно, необходимо изменить в режиме check_mode). |
platform | Платформа: posix | Целевая ОС или семейства ОС, для которых можно использовать модуль. |
Примечания
Примечание
- В некоторых случаях при использовании обязательного контроля доступа путь может всегда считаться отсутствующим, даже если он существует, но удаленный пользователь не может его изменить или создать.
- При ожидании появления пути обрабатываются символические ссылки. Многие другие модули, работающие с файлами, не следуют символическим ссылкам, поэтому операции с этим путем с помощью других модулей могут работать не так, как ожидается.
- При поиске статической строки в системном журнале важно учитывать возможность совпадения с записями, созданными модулями Ansible. Чтобы этого избежать, добавьте в строку поиска конструкцию регулярного выражения. Например, для поиска буквальной строки «this thing» можно использовать регулярное выражение «this t[h]ing».
См. также
См. также
- ansible.builtin.wait_for_connection
-
Ожидает, пока удаленная система не станет доступной и пригодной для использования.
- ansible.windows.win_wait_for
-
Ожидает выполнения условия, прежде чем продолжить.
- community.windows.win_wait_for_process
-
Ожидает появления или завершения процесса, прежде чем продолжить.
Примеры
- name: Sleep for 300 seconds and continue with play
ansible.builtin.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
ansible.builtin.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
ansible.builtin.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
ansible.builtin.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
ansible.builtin.wait_for:
path: /tmp/foo
- name: Wait until the string "completed" is in the file /tmp/foo before continuing
ansible.builtin.wait_for:
path: /tmp/foo
search_regex: completed
- name: Wait until the string "tomcat up" is in syslog, use regex character set to avoid self match
ansible.builtin.wait_for:
path: /var/log/syslog
search_regex: 'tomcat [u]p'
- name: Wait until regex pattern matches in the file /tmp/foo and print the matched group
ansible.builtin.wait_for:
path: /tmp/foo
search_regex: completed (?P<task>\w+)
register: waitfor
- ansible.builtin.debug:
msg: Completed {{ waitfor['match_groupdict']['task'] }}
- name: Wait until the lock file is removed
ansible.builtin.wait_for:
path: /var/lock/file.lock
state: absent
- name: Wait until the process is finished and pid was destroyed
ansible.builtin.wait_for:
path: /proc/3466/status
state: absent
- name: Output customized message when failed
ansible.builtin.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"
ansible.builtin.wait_for:
port: 22
host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}'
search_regex: OpenSSH
delay: 10
timeout: 300
delegate_to: localhost
# Same as above but using config lookup for the target,
# most plugins use 'remote_addr', but ssh uses 'host'
- name: Wait 300 seconds for port 22 to become open and contain "OpenSSH"
ansible.builtin.wait_for:
port: 22
host: "{{ lookup('config', 'host', plugin_name='ssh', plugin_type='connection') }}"
search_regex: OpenSSH
delay: 10
timeout: 300
delegate_to: localhost
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже приведены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
elapsed integer | Количество секунд, прошедших во время ожидания. Возвращается: всегда Пример: |
match_groupdict dictionary | Словарь со всеми именованными подгруппами совпадения, где ключом служит имя подгруппы; возвращается методом https://docs.python.org/3/library/re.html#re.Match.groupdict. Возвращается: всегда Пример: |
match_groups list / elements=string | Кортеж со всеми подгруппами совпадения; возвращается методом https://docs.python.org/3/library/re.html#re.Match.groups. Возвращается: всегда Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/wait_for_module.html