--- - name: check_etcd | Check if etcd is up and reachable uri: url: "{{ vault_etcd_url.split(',') | first }}/health" validate_certs: no client_cert: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" client_key: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" return_content: yes until: vault_etcd_health_check.status == 200 or vault_etcd_health_check.status == 401 retries: 3 delay: 2 delegate_to: "{{ groups['etcd'][0] }}" run_once: true failed_when: false register: vault_etcd_health_check - name: check_etcd | Set fact based off the etcd_health_check response set_fact: vault_etcd_available: "{{ vault_etcd_health_check.content }}" - set_fact: vault_etcd_available: "{{ vault_etcd_available.health|d()|bool }}" - name: check_etcd | Fail if etcd is not available and needed fail: msg: > Unable to start Vault cluster! Etcd is not available at {{ vault_etcd_url.split(',') | first }} however it is needed by Vault as a backend. when: vault_etcd_needed|d() and not vault_etcd_available