roles/common: rework firewall_Debian.yml playbook

Use newer Ansible task format, move from apt to package module, and
do package installs in one transaction using a list instead of a
loop.
This commit is contained in:
Alan Orth 2022-09-12 17:25:40 +03:00
parent 67c99dacf6
commit b663d27fd8
Signed by: alanorth
GPG Key ID: 0FB860CC9C45B1B9
1 changed files with 52 additions and 20 deletions

View File

@ -2,37 +2,52 @@
# Debian 11 will use nftables directly, with no firewalld. # Debian 11 will use nftables directly, with no firewalld.
- block: - block:
- name: Set Debian firewall packages - name: Install Debian firewall packages
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.set_fact: ansible.builtin.package:
debian_firewall_packages: name:
- fail2ban - fail2ban
- libnet-ip-perl # for aggregate-cidr-addresses.pl - libnet-ip-perl # for aggregate-cidr-addresses.pl
- nftables - nftables
- python3-systemd - python3-systemd
- curl # for nftables update scripts - curl # for nftables update scripts
state: present
- name: Install firewall packages cache_valid_time: 3600
ansible.builtin.apt: pkg={{ debian_firewall_packages }} state=present cache_valid_time=3600
- name: Remove iptables on newer Debian - name: Remove iptables on newer Debian
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.apt: pkg=iptables state=absent ansible.builtin.apt:
pkg: iptables
state: absent
- name: Copy nftables.conf - name: Copy nftables.conf
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.template: src=nftables.conf.j2 dest=/etc/nftables.conf owner=root mode=0644 ansible.builtin.template:
src: nftables.conf.j2
dest: /etc/nftables.conf
owner: root
mode: 0644
notify: notify:
- restart nftables - restart nftables
- restart fail2ban - restart fail2ban
- name: Create /etc/nftables extra config directory - name: Create /etc/nftables extra config directory
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.file: path=/etc/nftables state=directory owner=root mode=0755 ansible.builtin.file:
path: /etc/nftables
state: directory
owner: root
mode: 0755
- name: Copy extra nftables configuration files - name: Copy extra nftables configuration files
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.copy: src={{ item.src }} dest=/etc/nftables/{{ item.src }} owner=root group=root mode=0644 force={{ item.force }} ansible.builtin.copy:
src: "{{ item.src }}"
dest: "/etc/nftables/{{ item.src }}"
owner: root
group: root
mode: 0644
force: "{{ item.force }}"
loop: loop:
- { src: "spamhaus-ipv4.nft", force: "no" } - { src: "spamhaus-ipv4.nft", force: "no" }
- { src: "spamhaus-ipv6.nft", force: "no" } - { src: "spamhaus-ipv6.nft", force: "no" }
@ -43,9 +58,14 @@
- restart nftables - restart nftables
- restart fail2ban - restart fail2ban
- name: Copy Spamhaus nftables update scripts - name: Copy nftables update scripts
when: ansible_distribution_version is version('11', '>=') when: ansible_distribution_version is version('11', '>=')
ansible.builtin.copy: src={{ item }} dest=/usr/local/bin/{{ item }} mode=0755 owner=root group=root ansible.builtin.copy:
src: "{{ item }}"
dest: "/usr/local/bin/{{ item }}"
mode: 0755
owner: root
group: root
loop: loop:
- update-spamhaus-nftables.sh - update-spamhaus-nftables.sh
- aggregate-cidr-addresses.pl - aggregate-cidr-addresses.pl
@ -53,29 +73,41 @@
- name: Copy nftables systemd units - name: Copy nftables systemd units
when: ansible_distribution_version is version('11', '>=') when: ansible_distribution_version is version('11', '>=')
ansible.builtin.copy: src={{ item }} dest=/etc/systemd/system/{{ item }} mode=0644 owner=root group=root ansible.builtin.copy:
src: "{{ item }}"
dest: "/etc/systemd/system/{{ item }}"
mode: 0644
owner: root
group: root
loop: loop:
- update-spamhaus-nftables.service - update-spamhaus-nftables.service
- update-spamhaus-nftables.timer - update-spamhaus-nftables.timer
- update-abusech-nftables.service - update-abusech-nftables.service
- update-abusech-nftables.timer - update-abusech-nftables.timer
register: nftables_systemd_units register: nftables_systemd_units
# need to reload to pick up service/timer/environment changes # need to reload to pick up service/timer/environment changes
- name: Reload systemd daemon - name: Reload systemd daemon
ansible.builtin.systemd: daemon_reload=true ansible.builtin.systemd:
daemon_reload: true
when: nftables_systemd_units is changed when: nftables_systemd_units is changed
- name: Start and enable nftables update timers - name: Start and enable nftables update timers
when: ansible_distribution_version is version('11', '>=') when: ansible_distribution_version is version('11', '>=')
ansible.builtin.systemd: name={{ item }} state=started enabled=true ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
loop: loop:
- update-spamhaus-nftables.timer - update-spamhaus-nftables.timer
- update-abusech-nftables.timer - update-abusech-nftables.timer
- name: Start and enable nftables - name: Start and enable nftables
when: ansible_distribution_major_version is version('11', '>=') when: ansible_distribution_major_version is version('11', '>=')
ansible.builtin.systemd: name=nftables state=started enabled=true ansible.builtin.systemd:
name: nftables
state: started
enabled: true
- ansible.builtin.include_tasks: fail2ban.yml - ansible.builtin.include_tasks: fail2ban.yml
when: ansible_distribution_major_version is version('9', '>=') when: ansible_distribution_major_version is version('9', '>=')