Skip to content

Commit e797706

Browse files
authored
Merge pull request #14677 from jan-cerny/ansible_check_fix
Prevent Ansible Playbook termination in check mode
2 parents 46824c4 + 0c09bfa commit e797706

8 files changed

Lines changed: 48 additions & 24 deletions

File tree

  • linux_os/guide
    • auditing/auditd_configure_rules
      • audit_rules_enable_syscall_auditing/ansible
      • audit_rules_suid_auid_privilege_function/ansible
      • audit_rules_suid_privilege_function/ansible
    • services
      • ftp/ftp_configure_vsftpd/ftp_present_banner/ansible
      • ssh/ssh_server/firewalld_sshd_port_enabled/ansible
    • system/network
      • network-firewalld/ruleset_modifications
        • firewalld_loopback_traffic_restricted/ansible
        • firewalld_loopback_traffic_trusted/ansible
      • network-wireless/wireless_software/wireless_disable_interfaces/ansible

linux_os/guide/auditing/auditd_configure_rules/audit_rules_enable_syscall_auditing/ansible/shared.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
name: auditd.service
5858
state: restarted
5959
when:
60-
- ansible_facts.services["auditd.service"].state == "running"
60+
- ("auditd.service" in ansible_facts.services and
61+
ansible_facts.services["auditd.service"].state == "running")
6162
- (augenrules_syscall_auditing_rule_update_result.changed or
6263
auditctl_syscall_auditing_rule_update_result.changed)

linux_os/guide/auditing/auditd_configure_rules/audit_rules_suid_auid_privilege_function/ansible/shared.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,5 @@
6767
when:
6868
- (augenrules_audit_rules_privilege_function_update_result.changed or
6969
auditctl_audit_rules_privilege_function_update_result.changed)
70-
- ansible_facts.services["auditd.service"].state == "running"
70+
- ("auditd.service" in ansible_facts.services and
71+
ansible_facts.services["auditd.service"].state == "running")

linux_os/guide/auditing/auditd_configure_rules/audit_rules_suid_privilege_function/ansible/shared.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,5 @@
6868
when:
6969
- (augenrules_audit_rules_privilege_function_update_result.changed or
7070
auditctl_audit_rules_privilege_function_update_result.changed)
71-
- ansible_facts.services["auditd.service"].state == "running"
71+
- ("auditd.service" in ansible_facts.services and
72+
ansible_facts.services["auditd.service"].state == "running")

linux_os/guide/services/ftp/ftp_configure_vsftpd/ftp_present_banner/ansible/shared.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@
2020
ansible.builtin.systemd:
2121
name: vsftpd.service
2222
state: restarted
23-
when: banner_file_update_result.changed and ansible_facts.services["vsftpd.service"].state == "running"
23+
when: (banner_file_update_result.changed and "vsftpd.service" in ansible_facts.services
24+
and ansible_facts.services["vsftpd.service"].state == "running")

linux_os/guide/services/ssh/ssh_server/firewalld_sshd_port_enabled/ansible/shared.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
- name: '{{{ rule_title }}} - Collect facts about system services'
1818
ansible.builtin.service_facts:
1919

20-
- name: '{{{ rule_title }}} - Remediation is applicable if firewalld and NetworkManager services are running'
20+
- name: '{{{ rule_title }}} - Remediation is applicable if firewalld and
21+
NetworkManager services are running'
2122
block:
2223
- name: '{{{ rule_title }}} - Collect NetworkManager connections names'
2324
ansible.builtin.shell:
@@ -34,7 +35,7 @@
3435
changed_when: false
3536
failed_when: false
3637
with_items:
37-
- "{{ result_nmcli_cmd_connections_names.stdout_lines | default([]) }}"
38+
- "{{ result_nmcli_cmd_connections_names.stdout_lines | default([]) }}"
3839
when:
3940
- result_nmcli_cmd_connections_names.stdout_lines is defined
4041
- result_nmcli_cmd_connections_names.stdout_lines | length > 0
@@ -59,7 +60,8 @@
5960
when:
6061
- result_nmcli_cmd_zone_assignment is defined
6162
- result_nmcli_cmd_zone_assignment is changed
62-
- result_nmcli_cmd_zone_assignment.results | selectattr('changed', 'equalto', true) | list | length > 0
63+
- (result_nmcli_cmd_zone_assignment.results | selectattr('changed', 'equalto', true) |
64+
list | length > 0)
6365

6466
- name: '{{{ rule_title }}} - Collect firewalld active zones'
6567
ansible.builtin.shell:
@@ -82,17 +84,22 @@
8284
- result_firewall_cmd_zones_names.stdout_lines is defined
8385
- result_firewall_cmd_zones_names.stdout_lines | length > 0
8486
when:
85-
- ansible_facts.services['firewalld.service'].state == 'running'
86-
- ansible_facts.services['NetworkManager.service'].state == 'running'
87+
- ('firewalld.service' in ansible_facts.services and
88+
ansible_facts.services['firewalld.service'].state == 'running')
89+
- ('NetworkManager.service' in ansible_facts.services and
90+
ansible_facts.services['NetworkManager.service'].state == 'running')
8791

8892
- name: '{{{ rule_title }}} - Informative message based on services states'
8993
ansible.builtin.assert:
9094
that:
91-
- ansible_check_mode or ansible_facts.services['firewalld.service'].state == 'running'
92-
- ansible_check_mode or ansible_facts.services['NetworkManager.service'].state == 'running'
95+
- (ansible_check_mode or ('firewalld.service' in ansible_facts.services and
96+
ansible_facts.services['firewalld.service'].state == 'running'))
97+
- (ansible_check_mode or ('NetworkManager.service' in ansible_facts.services and
98+
ansible_facts.services['NetworkManager.service'].state == 'running'))
9399
fail_msg:
94100
- firewalld and NetworkManager services are not active. Remediation aborted!
95-
- This remediation could not be applied because it depends on firewalld and NetworkManager services running.
101+
- This remediation could not be applied because it depends on firewalld
102+
- and NetworkManager services running.
96103
- The service is not started by this remediation in order to prevent connection issues.
97104
success_msg:
98105
- {{{ rule_title }}} remediation successfully executed

linux_os/guide/system/network/network-firewalld/ruleset_modifications/firewalld_loopback_traffic_restricted/ansible/shared.yml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,23 @@
1919
block:
2020
- name: '{{{ rule_title }}} - Ensure firewalld trusted Zone Restricts IPv4 Loopback Traffic'
2121
ansible.builtin.command:
22-
cmd: firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family=ipv4 source address="127.0.0.1" destination not address="127.0.0.1" drop'
22+
cmd: >-
23+
firewall-cmd --permanent --zone=trusted
24+
--add-rich-rule='rule family=ipv4 source address="127.0.0.1"
25+
destination not address="127.0.0.1" drop'
2326
register: result_trusted_ipv4_restriction
2427
changed_when:
25-
- "'ALREADY_ENABLED' not in result_trusted_ipv4_restriction.stderr"
28+
- "'ALREADY_ENABLED' not in result_trusted_ipv4_restriction.stderr"
2629

2730
- name: '{{{ rule_title }}} - Ensure firewalld trusted Zone Restricts IPv6 Loopback Traffic'
2831
ansible.builtin.command:
29-
cmd: firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family=ipv6 source address="::1" destination not address="::1" drop'
32+
cmd: >-
33+
firewall-cmd --permanent --zone=trusted
34+
--add-rich-rule='rule family=ipv6 source address="::1"
35+
destination not address="::1" drop'
3036
register: result_trusted_ipv6_restriction
3137
changed_when:
32-
- "'ALREADY_ENABLED' not in result_trusted_ipv6_restriction.stderr"
38+
- "'ALREADY_ENABLED' not in result_trusted_ipv6_restriction.stderr"
3339

3440
- name: '{{{ rule_title }}} - Ensure firewalld Changes are Applied'
3541
ansible.builtin.service:
@@ -38,12 +44,14 @@
3844
when:
3945
- result_trusted_ipv4_restriction is changed or result_trusted_ipv6_restriction is changed
4046
when:
41-
- ansible_facts.services['firewalld.service'].state == 'running'
47+
- ('firewalld.service' in ansible_facts.services
48+
and ansible_facts.services['firewalld.service'].state == 'running')
4249

4350
- name: '{{{ rule_title }}} - Informative Message Based on Service State'
4451
ansible.builtin.assert:
4552
that:
46-
- ansible_check_mode or ansible_facts.services['firewalld.service'].state == 'running'
53+
- (ansible_check_mode or ('firewalld.service' in ansible_facts.services and
54+
ansible_facts.services['firewalld.service'].state == 'running'))
4755
fail_msg:
4856
- firewalld service is not active. Remediation aborted!
4957
- This remediation could not be applied because it depends on firewalld service running.

linux_os/guide/system/network/network-firewalld/ruleset_modifications/firewalld_loopback_traffic_trusted/ansible/shared.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
cmd: firewall-cmd --permanent --zone=trusted --add-interface=lo
2222
register: result_lo_interface_assignment
2323
changed_when:
24-
- "'ALREADY_ENABLED' not in result_lo_interface_assignment.stderr"
24+
- "'ALREADY_ENABLED' not in result_lo_interface_assignment.stderr"
2525

2626
- name: '{{{ rule_title }}} - Ensure firewalld Changes are Applied'
2727
ansible.builtin.service:
@@ -30,12 +30,14 @@
3030
when:
3131
- result_lo_interface_assignment is changed
3232
when:
33-
- ansible_facts.services['firewalld.service'].state == 'running'
33+
- ('firewalld.service' in ansible_facts.services and
34+
ansible_facts.services['firewalld.service'].state == 'running')
3435

3536
- name: '{{{ rule_title }}} - Informative Message Based on Service State'
3637
ansible.builtin.assert:
3738
that:
38-
- ansible_check_mode or ansible_facts.services['firewalld.service'].state == 'running'
39+
- (ansible_check_mode or ('firewalld.service' in ansible_facts.services
40+
and ansible_facts.services['firewalld.service'].state == 'running'))
3941
fail_msg:
4042
- firewalld service is not active. Remediation aborted!
4143
- This remediation could not be applied because it depends on firewalld service running.

linux_os/guide/system/network/network-wireless/wireless_software/wireless_disable_interfaces/ansible/shared.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
ansible.builtin.command: wicked ifdown {{ item }}
1414
loop: '{{ ansible_facts.interfaces }}'
1515
when:
16-
- ansible_facts.services['wickedd.service'].state == 'running'
16+
- ('wickedd.service' in ansible_facts.services and
17+
ansible_facts.services['wickedd.service'].state == 'running')
1718
- 'item.startswith("wl")'
1819

1920
- name: "{{{ rule_title }}} - Wicked Disable Wireless Network Interfaces"
@@ -23,7 +24,8 @@
2324
line: STARTMODE=off
2425
loop: '{{ ansible_facts.interfaces }}'
2526
when:
26-
- ansible_facts.services['wickedd.service'].state == 'running'
27+
- ('wickedd.service' in ansible_facts.services and
28+
ansible_facts.services['wickedd.service'].state == 'running')
2729
- 'item.startswith("wl")'
2830
{{%- else %}}
2931

@@ -40,4 +42,5 @@
4042
ansible.builtin.command: nmcli radio wifi off
4143
when:
4244
- "'NetworkManager' in ansible_facts.packages"
43-
- ansible_facts.services['NetworkManager.service'].state == 'running'
45+
- ('NetworkManager.service' in ansible_facts.services and
46+
ansible_facts.services['NetworkManager.service'].state == 'running')

0 commit comments

Comments
 (0)