You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/ansible-config/tasks/main.yml

147 lines
4.7 KiB
YAML

- 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) }}'