- name: test ansible-config init for valid output and no dupes block: - name: Create temporary file tempfile: path: '{{output_dir}}' state: file suffix: temp.ini register: ini_tempfile - name: run config full dump shell: ansible-config init -t all > {{ini_tempfile.path}} - name: run ini tester, for correctness and dupes shell: "{{ansible_playbook_python}} '{{role_path}}/files/ini_dupes.py' '{{ini_tempfile.path}}'" - name: test ansible-config validate block: # not testing w/o -t all as ansible-test uses it's own plugins and would give false positives - name: validate config files shell: ansible-config validate -t all -v register: valid_cfg loop: - empty.cfg - base_valid.cfg - base_all_valid.cfg - invalid_base.cfg - invalid_plugins_config.ini ignore_errors: true environment: ANSIBLE_CONFIG: "{{role_path ~ '/files/' ~ item}}" - name: ensure expected cfg check results assert: that: - valid_cfg['results'][0] is success - valid_cfg['results'][1] is success - valid_cfg['results'][2] is success - valid_cfg['results'][3] is failed - valid_cfg['results'][4] is failed - name: validate env vars shell: ansible-config validate -t all -v -f env register: valid_env environment: ANSIBLE_COW_SELECTION: 1 - name: validate env vars shell: ansible-config validate -t all -v -f env register: invalid_env ignore_errors: true environment: ANSIBLE_COW_DESTRUCTION: 1 - name: ensure env check is what we expected assert: that: - valid_env is success - invalid_env is failed - name: dump galaxy_server config environment: ANSIBLE_CONFIG: '{{ role_path }}/files/galaxy_server.ini' vars: expected: my_org_hub: url: value: "https://automation.my_org/" origin: role_path ~ "/files/galaxy_server.ini" username: value: my_user origin: role_path ~ "/files/galaxy_server.ini" password: value: my_pass origin: role_path ~ "/files/galaxy_server.ini" api_version: value: None origin: default release_galaxy: test_galaxy: my_galaxy_ng: block: - ansible.builtin.command: ansible-config dump --type {{ item }} --format json loop: - base - all register: galaxy_server_dump #- debug: msg='{{ (galaxy_server_dump.results[0].stdout | from_json) }}' #- debug: msg='{{ (galaxy_server_dump.results[1].stdout | from_json) }}' - name: extract galaxy servers from config dump set_fact: galaxy_server_dump_base: '{{ (galaxy_server_dump.results[0].stdout | from_json | select("contains", "GALAXY_SERVERS"))[0].get("GALAXY_SERVERS") }}' galaxy_server_dump_all: '{{ (galaxy_server_dump.results[1].stdout | from_json | select("contains", "GALAXY_SERVERS"))[0].get("GALAXY_SERVERS") }}' - name: set keys vars as we reuse a few times set_fact: galaxy_server_dump_base_keys: '{{ galaxy_server_dump_base.keys()|list|sort }}' galaxy_server_dump_all_keys: '{{ galaxy_server_dump_all.keys()|list|sort }}' - name: Check galaxy server values are present and match expectations vars: gs: my_org_hub: url: "https://automation.my_org/" username: "my_user" password: "my_pass" release_galaxy: url: "https://galaxy.ansible.com/" token: "my_token" test_galaxy: url: "https://galaxy-dev.ansible.com/" token: "my_test_token" my_galaxy_ng: url: "http://my_galaxy_ng:8000/api/automation-hub/" token: "my_keycloak_access_token" auth_url: "http://my_keycloak:8080/auth/realms/myco/protocol/openid-connect/token" client_id: "galaxy-ng" gs_all: url: token: auth_url: username: password: api_version: timeout: origin: '{{ role_path ~ "/files/galaxy_server.ini" }}' gs_keys: '{{ gs.keys()|list|sort }}' block: - name: Check galaxy server config reflects what we expect assert: that: - (galaxy_server_dump_base_keys | count) == 4 - galaxy_server_dump_base_keys == gs_keys - (galaxy_server_dump_all_keys | count) == 4 - galaxy_server_dump_all_keys == gs_keys - name: Check individual settings assert: that: - gs[item[0]][item[1]] == galaxy_server_dump_base[item[0]][item[1]][1] - gs[item[0]][item[1]] == galaxy_server_dump_all[item[0]][item[1]][1] when: - item[1] in gs[item[0]] loop: '{{gs_keys | product(gs_all) }}'