xoxys.firewalld/tasks/setup.yml

96 lines
2.8 KiB
YAML

---
- block:
- name: Install packages
package:
name: "{{ item }}"
loop:
- firewalld
- python3-firewall
- name: Configure firewalld ipsets
template:
src: etc/firewalld/ipsets/ipset.xml.j2
dest: /etc/firewalld/ipsets/{{ item.name }}.xml
loop: "{{ firewalld_ipsets }}"
loop_control:
label: "{{ item.name }}"
notify: __firewalld_reload
- name: Register active ipsets
find:
paths: /etc/firewalld/ipsets
file_type: file
patterns: "*.xml"
register: __firewalld_ipsets_active
changed_when: false
failed_when: false
- name: Remove unmanaged ipsets
file:
path: "/etc/firewalld/ipsets/{{ item }}"
state: absent
loop: "{{ __firewalld_ipsets_active.files | map(attribute='path') | list }}"
notify: __firewalld_reload
when: item | replace('.xml','') not in firewalld_ipsets | map(attribute='name') | list
- name: Configure firewalld services
template:
src: etc/firewalld/services/service.xml.j2
dest: /etc/firewalld/services/{{ item.name }}.xml
loop: "{{ firewalld_services }}"
loop_control:
label: "{{ item.name }}"
notify: __firewalld_reload
- name: Register active services
find:
paths: /etc/firewalld/services
file_type: file
patterns: "*.xml"
register: __firewalld_services_active
changed_when: false
failed_when: false
- name: Remove unmanaged services
file:
path: "/etc/firewalld/services/{{ item }}"
state: absent
loop: "{{ __firewalld_services_active.files | map(attribute='path') | list }}"
notify: __firewalld_reload
when: item | replace('.xml','') not in firewalld_services | map(attribute='name') | list
- name: Configure firewalld zones
template:
src: etc/firewalld/zones/zone.xml.j2
dest: /etc/firewalld/zones/{{ item.name }}.xml
loop: "{{ firewalld_zones }}"
loop_control:
label: "{{ item.name }}"
notify: __firewalld_reload
- name: Register active zones
find:
paths: /etc/firewalld/zones
file_type: file
patterns: "*.xml"
register: __firewalld_zones_active
changed_when: false
failed_when: false
- name: Remove unmanaged zones
file:
path: "/etc/firewalld/zones/{{ item }}"
state: absent
loop: "{{ __firewalld_zones_active.files | map(attribute='path') | list }}"
notify: __firewalld_reload
when: item | replace('.xml','') not in firewalld_zones | map(attribute='name') | list
- name: Ensure service is up and running
service:
name: firewalld
daemon_reload: True
enabled: True
state: started
become: True
become_user: root