Note
This module is part of ansible-core and included in all Ansible installations. In most cases, you can use the short module name wait_for even without specifying the collections: keyword. However, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
New in version 0.7: of ansible.builtin
timeout, this is the default if nothing is specified or just timeout is specified. This does not produce an error.| Parameter | Choices/Defaults | Comments |
|---|---|---|
| active_connection_states list / elements=string added in 2.3 of ansible.builtin | Default: ["ESTABLISHED", "FIN_WAIT1", "FIN_WAIT2", "SYN_RECV", "SYN_SENT", "TIME_WAIT"] | The list of TCP connection states which are counted as active connections. |
| connect_timeout integer | Default: 5 | Maximum number of seconds to wait for a connection to happen before closing and retrying. |
| delay integer | Default: 0 | Number of seconds to wait before starting to poll. |
| exclude_hosts list / elements=string added in 1.8 of ansible.builtin | List of hosts or IPs to ignore when looking for active TCP connections for drained state. | |
| host string | Default: "127.0.0.1" | A resolvable hostname or IP address to wait for. |
| msg string added in 2.4 of ansible.builtin | This overrides the normal error message from a failure to meet the required conditions. | |
| path path added in 1.4 of ansible.builtin | Path to a file on the filesystem that must exist before continuing. path and port are mutually exclusive parameters. | |
| port integer | Port number to poll. path and port are mutually exclusive parameters. | |
| search_regex string added in 1.4 of ansible.builtin | Can be used to match a string in either a file or a socket connection. Defaults to a multiline regex. | |
| sleep integer added in 2.3 of ansible.builtin | Default: 1 | Number of seconds to sleep between checks. Before Ansible 2.3 this was hardcoded to 1 second. |
| state string |
| Either present, started, or stopped, absent, or drained.When checking a port started will ensure the port is open, stopped will check that it is closed, drained will check for active connections.When checking for a file or a search string present or started will ensure that the file or string is present before continuing, absent will check that file is absent or removed. |
| timeout integer | Default: 300 | Maximum number of seconds to wait for, when used with another condition it will force an error. When used without other conditions it is equivalent of just sleeping. |
Note
See also
The official documentation on the ansible.builtin.wait_for_connection module.
The official documentation on the ansible.windows.win_wait_for module.
The official documentation on the community.windows.win_wait_for_process module.
- 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
Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description |
|---|---|---|
| elapsed integer | always | The number of seconds that elapsed while waiting Sample: 23 |
| match_groupdict dictionary | always | Dictionary containing all the named subgroups of the match, keyed by the subgroup name, as returned by https://docs.python.org/2/library/re.html#re.MatchObject.groupdict
Sample: {'group': 'match'} |
| match_groups list / elements=string | always | Tuple containing all the subgroups of the match as returned by https://docs.python.org/2/library/re.html#re.MatchObject.groups
Sample: ['match 1', 'match 2'] |
© 2012–2018 Michael DeHaan
© 2018–2021 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