Spec-Zone.ru › Ansible

Модуль 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-соединений, которые считаются активными соединениями.

По умолчанию: ["ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "SYN_RECV", "SYN_SENT", "TIME_WAIT"]

connect_timeout

integer

Максимальное количество секунд ожидания установки соединения, по истечении которого соединение будет закрыто и предпринята новая попытка.

По умолчанию: 5

delay

integer

Количество секунд ожидания перед началом опроса.

По умолчанию: 0

exclude_hosts

list / elements=string

Список узлов или IP-адресов, которые следует игнорировать при поиске активных TCP-соединений для состояния drained.

host

string

Имя узла, которое можно разрешить, или IP-адрес, доступности которого нужно дождаться.

По умолчанию: "127.0.0.1"

msg

string

Заменяет стандартное сообщение об ошибке, возникающей при невыполнении требуемых условий.

path

path

Путь к файлу в файловой системе, который должен существовать, прежде чем продолжить.

Параметры path и port являются взаимоисключающими.

port

integer

Номер порта для опроса.

Параметры path и port являются взаимоисключающими.

search_regex

string

Можно использовать для поиска строки в файле или сокетном соединении.

По умолчанию используется многострочное регулярное выражение.

При поиске статической строки в системном журнале учитывайте, что Ansible по умолчанию записывает туда собственные действия. Дополнительную информацию см. в примечаниях и примерах.

sleep

integer

Количество секунд ожидания между проверками.

До Ansible 2.3 это значение было жестко задано и составляло 1 секунду.

По умолчанию: 1

state

string

Одно из значений: present, started, stopped, absent или drained.

При проверке порта значение started означает, что порт должен быть открыт, stopped — что он должен быть закрыт, а drained — что будут проверяться активные соединения.

При проверке файла или поиске строки значения present или started означают, что файл или строка должны присутствовать, прежде чем продолжить; значение absent означает, что файл должен отсутствовать или быть удален.

Варианты:

  • "absent"
  • "drained"
  • "present"
  • "started" ← (по умолчанию)
  • "stopped"

timeout

integer

Максимальное время ожидания в секундах; при использовании с другим условием по его истечении будет вызвана ошибка.

Если использовать без других условий, параметр эквивалентен простой задержке.

По умолчанию: 300

Атрибуты

Атрибут

Поддержка

Описание

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

Количество секунд, прошедших во время ожидания.

Возвращается: всегда

Пример: 23

match_groupdict

dictionary

Словарь со всеми именованными подгруппами совпадения, где ключом служит имя подгруппы; возвращается методом https://docs.python.org/3/library/re.html#re.Match.groupdict.

Возвращается: всегда

Пример: {"group": "match"}

match_groups

list / elements=string

Кортеж со всеми подгруппами совпадения; возвращается методом https://docs.python.org/3/library/re.html#re.Match.groups.

Возвращается: всегда

Пример: ["match 1", "match 2"]

Авторы

  • Jeroen Hoekx (@jhoekx)
  • John Jarvis (@jarv)
  • Andrii Radyk (@AnderEnder)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Связь с сообществом

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API