In diesem kurzen Beitrag möchte ich euch zeigen, wie man mit Hilfe von Ansible die Host-Firewall (firewalld) konfigurieren kann. Dies ist z.B. dann nützlich, wenn man die identische Konfiguration auf mehreren Hosts ausbringen möchte.
Bevor es an die Freigabe spezifischer Ports und Services in der Host-Firewall geht, wird zuerst sichergestellt, dass der Dienst firewalld installiert, aktiviert und gestartet ist. Dazu dienen die Ansible-Module yum und service. Folgendes Playbook zeigt beispielhaft, wie diese genutzt werden können, um vorstehende Anforderungen zu erfüllen:
---
# Install, activate and start firewalld
- hosts: foo.example.com
tasks:
- name: Make sure firewalld is installed
yum:
name: firewalld
state: latest
- name: Activate and start firewalld service
service:
name: firewalld
enabled: yes
status: started
Bei Verwendung einer auf Debian basierenden Distribution ist statt yum das Modul apt zu verwenden.
Um jetzt z.B. die Services HTTP und HTTPS in der lokalen Host-Firewall freizugeben, kann obiges Playbook um die folgenden Abschnitte, unter Verwendung des Ansible-Moduls firewalld, ergänzt werden:
[...]
- name: Enable immediate and permanent access to HTTP
firewalld:
service: http
permanent: yes
immediate: yes
state: enabled
- name: Enable immediate and permanent access to HTTPS
firewalld:
service: https
permanent: yes
immediate: yes
state: enabled
Aktuell ist es leider noch nicht möglich dem Parameter ’service‘ eine Liste zu übergeben. Auf GitHub existiert jedoch bereits ein RFE für diese Funktion.