Skip to content

Instantly share code, notes, and snippets.

@mikeifomin
Created October 8, 2016 10:20
Show Gist options
  • Save mikeifomin/67e233cd461331de16707ef59a07e372 to your computer and use it in GitHub Desktop.
Save mikeifomin/67e233cd461331de16707ef59a07e372 to your computer and use it in GitHub Desktop.
Ansible wait_for http
- name: wait_for http
command: "curl --silent {{ url }}"
register: result
until: result.stdout.find("200 OK") != -1
retries: 60
delay: 1
changed_when: false
@trilom
Copy link

trilom commented Jul 5, 2020

Here is a variation of the above that works. Since this constantly returns a 200 it checks content instead. Similar to the above examples you can add status_code: [200, 403] if the health check returns a 200 or a 403 as passing and check that in the until portion.

- name: wait for consul to come up
  uri:
    url: "http://127.0.0.1:8500/v1/status/leader"
    method: GET
    headers:
      Authorization: Bearer {{ consul_acl_master_token }}
    return_content: yes
  register: _result
  until: _result.content != '\"\"'
  retries: 30 # retry X times
  delay: 3 # pause for X sec b/w each call

@mmarkgraf-tpgroup
Copy link

The dependency on httplib2 was removed in Ansible 2.1

And it can be run as a local action on the ansible-host, instead of the target host.
(Unless your network setup forbids ansible to reach the target url)

- name: Wait for frontend at {{ somewhere }} to come up
  local_action:
    module: uri
    url: "{{ somewhere }}"
    status_code: 200
  register: result
[...]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment