main.yml (2320B)
1 --- 2 - name: Gather service facts for optional post-deployment checks 3 ansible.builtin.service_facts: 4 5 - name: Check that required systemd units are active 6 ansible.builtin.command: 7 argv: 8 - systemctl 9 - is-active 10 - --quiet 11 - "{{ item.unit }}" 12 loop: "{{ post_deployment_systemd_checks }}" 13 loop_control: 14 label: "{{ item.unit }}" 15 register: post_deployment_systemd_check 16 changed_when: false 17 failed_when: false 18 retries: "{{ post_deployment_check_retries }}" 19 delay: "{{ post_deployment_check_delay }}" 20 until: post_deployment_systemd_check.rc == 0 21 when: item.enabled | bool 22 23 - name: Check that required HTTP endpoints respond 24 ansible.builtin.uri: 25 url: "{{ item.url }}" 26 unix_socket: "{{ item.unix_socket | default(omit) }}" 27 status_code: 200 28 timeout: "{{ post_deployment_http_timeout }}" 29 use_proxy: false 30 loop: "{{ post_deployment_http_checks }}" 31 loop_control: 32 label: "{{ item.name }}" 33 register: post_deployment_http_check 34 changed_when: false 35 failed_when: false 36 retries: "{{ post_deployment_check_retries }}" 37 delay: "{{ post_deployment_check_delay }}" 38 until: post_deployment_http_check.status | default(-1) == 200 39 when: item.enabled | bool 40 41 - name: Collect failed post-deployment checks 42 ansible.builtin.set_fact: 43 post_deployment_failed_systemd_units: >- 44 {{ 45 post_deployment_systemd_check.results 46 | rejectattr('skipped', 'defined') 47 | rejectattr('rc', 'equalto', 0) 48 | map(attribute='item.unit') 49 | list 50 }} 51 post_deployment_failed_http_endpoints: >- 52 {{ 53 post_deployment_http_check.results 54 | rejectattr('skipped', 'defined') 55 | rejectattr('status', 'equalto', 200) 56 | map(attribute='item.name') 57 | list 58 }} 59 60 - name: Report post-deployment sanity check failures 61 ansible.builtin.assert: 62 that: 63 - post_deployment_failed_systemd_units | length == 0 64 - post_deployment_failed_http_endpoints | length == 0 65 fail_msg: |- 66 Post-deployment sanity checks failed. 67 Inactive systemd units: {{ post_deployment_failed_systemd_units | join(', ') or 'none' }} 68 Unavailable HTTP endpoints: {{ post_deployment_failed_http_endpoints | join(', ') or 'none' }} 69 success_msg: All post-deployment sanity checks passed.