Модуль 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 список / элементы=строка | Список состояний TCP-соединений, которые считаются активными подключениями. По умолчанию: |
connect_timeout целое число | Максимальное количество секунд ожидания подключения перед закрытием и повторной попыткой. По умолчанию: |
delay целое число | Количество секунд ожидания перед началом опроса. По умолчанию: |
exclude_hosts список / элементы=строка | Список хостов или IP-адресов, которые нужно игнорировать при поиске активных TCP-соединений для состояния |
host строка | Разрешимый хост или IP-адрес, для которого нужно дождаться. По умолчанию: |
| ... | ... |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: нет | Может работать в режиме check_mode и возвращать прогноз изменённого статуса без модификации целевого объекта, если не поддерживается, действие будет пропущено. |
diff_mode | Поддержка: нет | Вернёт подробности о том, что изменилось (или, возможно, нужно изменить в режиме check_mode), когда в режиме diff. |
platform | Платформа: posix | Целевые ОС/семейства, с которыми можно взаимодействовать |
Примечания
Примечание
- Возможность использования search_regex с подключением по порту была добавлена в Ansible 1.7.
- До Ansible 2.4 проверка отсутствия каталога или UNIX-сокетa работала неправильно.
- До Ansible 2.4 проверка наличия файла работала неправильно, если у удалённого пользователя не было прав на чтение этого файла.
- В некоторых ситуациях при использовании обязательного контроля доступа путь может всегда обрабатываться как отсутствующий, даже если он существует, но не может быть изменён или создан удалённым пользователем.
- При ожидании пути символьные ссылки будут следовать. Многие другие модули, которые обрабатывают файлы, не следуют символическим ссылкам, поэтому операции с путём с помощью других модулей могут не работать так, как ожидается.
См. также
См. также
- 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 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
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"
ansible.builtin.wait_for:
port: 22
host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}'
search_regex: OpenSSH
delay: 10
vars:
ansible_connection: local
Возвращаемые значения
Общие возвращаемые значения описаны в этой статье, следующие поля уникальны для данного модуля:
Ключ | Описание |
|---|---|
elapsed целое число | Количество секунд, прошедших во время ожидания Возвращается: всегда Пример: |
match_groupdict словарь | Словарь, содержащий все именованные подгруппы совпадения, с ключами по имени подгруппы, возвращённый https://docs.python.org/3/library/re.html#re.MatchObject.groupdict Возвращается: всегда Пример: |
match_groups список / элементы=строка | Кортеж, содержащий все подгруппы совпадения, как возвращается https://docs.python.org/3/library/re.html#re.MatchObject.groups Возвращается: всегда Пример: |
Ссылки на коллекции
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/wait_for_module.html