ansible-taler-exchange

Ansible playbook to deploy a production Taler Exchange
Log | Files | Refs | README | LICENSE

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.