diff --git a/tests/tasks/run_role_with_clear_facts.yml b/tests/tasks/run_role_with_clear_facts.yml new file mode 100644 index 0000000..0522b62 --- /dev/null +++ b/tests/tasks/run_role_with_clear_facts.yml @@ -0,0 +1,37 @@ +--- +# Task file: clear_facts, run linux-system-roles.nbde_server. +# Include this with include_tasks or import_tasks +# Input: +# - __sr_tasks_from: tasks_from to run - same as tasks_from in include_role +# - __sr_public: export private vars from role - same as public in include_role +# - __sr_failed_when: set to false to ignore role errors - same as failed_when in include_role +- name: Clear facts + meta: clear_facts + +# note that you can use failed_when with import_role but not with include_role +# so this simulates the __sr_failed_when false case +# Q: Why do we need a separate task to run the role normally? Why not just +# run the role in the block and rethrow the error in the rescue block? +# A: Because you cannot rethrow the error in exactly the same way as the role does. +# It might be possible to exactly reconstruct ansible_failed_result but it's not worth the effort. +- name: Run the role with __sr_failed_when false + when: + - __sr_failed_when is defined + - not __sr_failed_when + block: + - name: Run the role + include_role: + name: linux-system-roles.nbde_server + tasks_from: "{{ __sr_tasks_from | default('main') }}" + public: "{{ __sr_public | default(false) }}" + rescue: + - name: Ignore the failure when __sr_failed_when is false + debug: + msg: Ignoring failure when __sr_failed_when is false + +- name: Run the role normally + include_role: + name: linux-system-roles.nbde_server + tasks_from: "{{ __sr_tasks_from | default('main') }}" + public: "{{ __sr_public | default(false) }}" + when: __sr_failed_when | d(true) diff --git a/tests/tests_default.yml b/tests/tests_default.yml index f90ef94..2178063 100644 --- a/tests/tests_default.yml +++ b/tests/tests_default.yml @@ -1,14 +1,13 @@ --- - name: Ensure that the role runs with default parameters hosts: all - gather_facts: false tasks: - name: Run test block: - name: Run role - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Verify role results include_tasks: tasks/verify-role-results.yml diff --git a/tests/tests_default_vars.yml b/tests/tests_default_vars.yml index cf1ba83..67c933c 100644 --- a/tests/tests_default_vars.yml +++ b/tests/tests_default_vars.yml @@ -5,9 +5,9 @@ - name: Run test block: - name: Run role - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Assert that the role declares all parameters in defaults assert: diff --git a/tests/tests_deploy_keys.yml b/tests/tests_deploy_keys.yml index 934d9bf..230322d 100644 --- a/tests/tests_deploy_keys.yml +++ b/tests/tests_deploy_keys.yml @@ -21,14 +21,12 @@ nbde_server_keys_dir: "{{ __tmpdir.path }}" - name: Ensure we have keys - include_role: - name: linux-system-roles.nbde_server + include_tasks: tasks/run_role_with_clear_facts.yml - name: Fetch the keys from every host - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: true nbde_server_deploy_keys: false @@ -42,10 +40,9 @@ register: nbde_server_keys_before_redeploy - name: Redeploy these same keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: false nbde_server_deploy_keys: true diff --git a/tests/tests_fetch_keys_deploy_not_set.yml b/tests/tests_fetch_keys_deploy_not_set.yml index 9b8ad8d..72f64b4 100644 --- a/tests/tests_fetch_keys_deploy_not_set.yml +++ b/tests/tests_fetch_keys_deploy_not_set.yml @@ -25,9 +25,9 @@ nbde_server_keys_dir: "{{ __tmpdir.path }}" - name: Ensure we have keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Gather keys find: @@ -39,10 +39,9 @@ register: nbde_server_host_keys - name: Run with nbde_server_deploy_keys not set to check the keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_rotate_keys: false nbde_server_fetch_keys: true nbde_server_deploy_keys: false diff --git a/tests/tests_fetch_keys_deploy_set.yml b/tests/tests_fetch_keys_deploy_set.yml index 840746e..91f93c0 100644 --- a/tests/tests_fetch_keys_deploy_set.yml +++ b/tests/tests_fetch_keys_deploy_set.yml @@ -30,9 +30,9 @@ nbde_server_keys_dir: "{{ __tmpdir.path }}" - name: Ensure we have keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Gather common keys, from the first host in the inventory run_once: true @@ -45,10 +45,9 @@ register: nbde_server_host_common_keys - name: Run with nbde_server_deploy_keys set to check the common keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_rotate_keys: false nbde_server_fetch_keys: true nbde_server_deploy_keys: true diff --git a/tests/tests_include_vars_from_parent.yml b/tests/tests_include_vars_from_parent.yml index ab088b6..f4b9e55 100644 --- a/tests/tests_include_vars_from_parent.yml +++ b/tests/tests_include_vars_from_parent.yml @@ -1,7 +1,6 @@ --- - name: Test role include variable override hosts: all - gather_facts: true tasks: - name: Create var file in caller that can override the one in called role delegate_to: localhost diff --git a/tests/tests_nbde_server_keys_dir.yml b/tests/tests_nbde_server_keys_dir.yml index 0f38816..cd332b8 100644 --- a/tests/tests_nbde_server_keys_dir.yml +++ b/tests/tests_nbde_server_keys_dir.yml @@ -9,10 +9,9 @@ - name: Test 1 - only nbde_server_fetch_keys set block: - name: With nbde_server_fetch_keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: true - name: Unreachable task @@ -32,10 +31,9 @@ - name: Test 2 - only nbde_server_deploy_keys set block: - name: With nbde_server_deploy_keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_deploy_keys: true - name: Unreachable task @@ -55,10 +53,9 @@ - name: Test 3 - nbde_server_fetch_keys and nbde_server_deploy_keys set block: - name: With nbde_server_fetch_keys and deploy keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: true nbde_server_deploy_keys: true @@ -79,10 +76,9 @@ - name: Test 4 - nbde_server_keys_dir is absolute path block: - name: Directory starting with ./ - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: true nbde_server_keys_dir: ./foobar @@ -103,10 +99,9 @@ - name: Test 5 - nbde_server_keys_dir is absolute path block: - name: Directory without leading ./ - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_fetch_keys: true nbde_server_keys_dir: foobar diff --git a/tests/tests_nbde_server_rotate_keys.yml b/tests/tests_nbde_server_rotate_keys.yml index 00550b9..a0c74bd 100644 --- a/tests/tests_nbde_server_rotate_keys.yml +++ b/tests/tests_nbde_server_rotate_keys.yml @@ -10,9 +10,9 @@ - name: Run tests block: - name: Ensure we have keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Gather keys find: @@ -26,10 +26,9 @@ register: nbde_server_keys - name: Run with nbde_server_rotate_keys not set to check keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_rotate_keys: false - name: Gather keys after running with nbde_server_rotate_keys not set @@ -48,10 +47,9 @@ that: nbde_server_keys.files == nbde_server_rotate_not_set.files - name: Run with nbde_server_rotate_keys set to check keys - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_rotate_keys: true - name: Gather keys after running with nbde_server_rotate_keys set diff --git a/tests/tests_nbde_server_service_state.yml b/tests/tests_nbde_server_service_state.yml index 6b33342..4198d52 100644 --- a/tests/tests_nbde_server_service_state.yml +++ b/tests/tests_nbde_server_service_state.yml @@ -10,9 +10,9 @@ - name: Run tests block: - name: Accepting connections without specifying state - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true - name: Gather state of services service: @@ -29,10 +29,9 @@ loop: "{{ nbde_server_state.results }}" - name: Not accepting connections specifying state stopped - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_service_state: stopped - name: Gather state of services @@ -50,10 +49,9 @@ loop: "{{ nbde_server_state.results }}" - name: Accepting connections specifying state started - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_service_state: started - name: Gather state of services diff --git a/tests/tests_share_system_dir.yml b/tests/tests_share_system_dir.yml index d9ca267..4d2e3a2 100644 --- a/tests/tests_share_system_dir.yml +++ b/tests/tests_share_system_dir.yml @@ -3,7 +3,6 @@ Ensure that the role can share tangd.socket.d directory with other files hosts: all - gather_facts: false vars: maxcon_conf: /etc/systemd/system/tangd.socket.d/override2.conf tangd_dir_mode: "0775" @@ -26,9 +25,9 @@ mode: "{{ tangd_file_mode }}" - name: Run role - include_role: - name: linux-system-roles.nbde_server - public: true # only need this the first time to get private vars + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true # only need this the first time to get private vars - name: Check tangd socket dir stat: @@ -49,8 +48,7 @@ that: not __nbde_server_custom_dir is changed - name: Run the role with a custom port - include_role: - name: linux-system-roles.nbde_server + include_tasks: tasks/run_role_with_clear_facts.yml vars: nbde_server_port: 7500 nbde_server_firewall_zone: public @@ -87,8 +85,7 @@ state: absent - name: Run the role with default port - include_role: - name: linux-system-roles.nbde_server + include_tasks: tasks/run_role_with_clear_facts.yml - name: Check tangd socket dir is absent stat: diff --git a/tests/tests_tangd_custom_port.yml b/tests/tests_tangd_custom_port.yml index 683e634..0dfa220 100644 --- a/tests/tests_tangd_custom_port.yml +++ b/tests/tests_tangd_custom_port.yml @@ -10,9 +10,9 @@ - name: Run tests block: - name: Install with custom port and firewall zone - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml + vars: + __sr_public: true when: not __bootc_validation | d(false) # role does not run during bootc QEMU validation, thus some vars are undefined @@ -80,10 +80,9 @@ - name: Install with default port and firewall zone - include_role: - name: linux-system-roles.nbde_server - public: true + include_tasks: tasks/run_role_with_clear_facts.yml vars: + __sr_public: true nbde_server_port: 80 nbde_server_firewall_zone: public nbde_server_manage_firewall: true