Update ipt-server role: specify hosts in ipt-server.yml and add configuration for cloud-01.oopen.de
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
# ipt-firewall configuration for cloud-01.oopen.de
|
||||||
|
# Generated by extract-fw-host-vars.py - review before committing!
|
||||||
|
# Place in: host_vars/<hostname>/ipt_firewall.yml
|
||||||
|
|
||||||
|
# --- Network
|
||||||
|
fw_ext_interfaces:
|
||||||
|
- "eth0"
|
||||||
|
fw_ext_ips_v4:
|
||||||
|
- "162.55.82.74"
|
||||||
|
fw_ext_ips_v6:
|
||||||
|
- "2a01:4f8:271:1266::74"
|
||||||
|
|
||||||
|
# --- Munin
|
||||||
|
munin_remote_ipv4: 37.27.121.227
|
||||||
|
munin_remote_ipv6: "2a01:4f9:3070:2bda::227"
|
||||||
|
|
||||||
|
# --- HTTP
|
||||||
|
fw_http_server_ips: $ext_1_ip
|
||||||
|
|
||||||
|
# --- Mail
|
||||||
|
fw_mail_client_ips: $ext_1_ip
|
||||||
|
|
||||||
|
# --- Jitsi
|
||||||
|
fw_jitsi_tcp_ports: $standard_jitsi_tcp_ports
|
||||||
|
fw_jitsi_udp_port_range: $standard_jitsi_udp_port_range
|
||||||
|
|
||||||
|
# --- Block
|
||||||
|
fw_blocked_ips: 222.184.0.0/13 61.160.0.0/16 116.8.0.0/14
|
||||||
|
|
||||||
|
# --- Other
|
||||||
|
fw_jitsi_tcp_ports_out: "$standard_turn_service_ports,4443,4444,4445,4446"
|
||||||
|
fw_jitsi_udp_ports_out: "$standard_http_ports,$standard_turn_service_ports,4443,4444,4445,4446"
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- hosts: all
|
- hosts: oopen_server:warenform_server:!no_ipt_firewall
|
||||||
roles:
|
roles:
|
||||||
- ipt-server
|
- ipt-server
|
||||||
|
|||||||
@@ -77,50 +77,28 @@ bleiben unangetastet.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Schritt 3 — Verifizieren: sind die Rules identisch?
|
## Schritt 3 — Aktuellen Stand einfrieren
|
||||||
|
|
||||||
Dieser Schritt prüft, ob ein Neustart der Firewall mit den neuen Skripten und
|
Bevor Ansible die Config-Dateien überschreibt, wird der aktuelle Zustand der
|
||||||
den bestehenden Config-Dateien exakt dieselben iptables-Rules erzeugt wie aktuell
|
laufenden Firewall-Rules gesichert. Das ist der Referenzwert für den späteren
|
||||||
geladen.
|
Vergleich.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ssh <hostname> '
|
ssh <hostname> '
|
||||||
# Aktuellen Stand einfrieren (Timestamps und Zähler normalisieren)
|
|
||||||
iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||||
> /tmp/fw_before_v4.rules
|
> /tmp/fw_before_v4.rules
|
||||||
ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||||
> /tmp/fw_before_v6.rules
|
> /tmp/fw_before_v6.rules
|
||||||
|
echo "Stand gesichert."
|
||||||
# Firewall neu starten
|
|
||||||
systemctl restart ipt-firewall
|
|
||||||
systemctl restart ip6t-firewall
|
|
||||||
|
|
||||||
# Neuen Stand einfrieren
|
|
||||||
iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
|
||||||
> /tmp/fw_after_v4.rules
|
|
||||||
ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
|
||||||
> /tmp/fw_after_v6.rules
|
|
||||||
|
|
||||||
# Vergleichen
|
|
||||||
echo "=== IPv4 diff ==="
|
|
||||||
diff /tmp/fw_before_v4.rules /tmp/fw_after_v4.rules
|
|
||||||
echo "=== IPv6 diff ==="
|
|
||||||
diff /tmp/fw_before_v6.rules /tmp/fw_after_v6.rules
|
|
||||||
'
|
'
|
||||||
```
|
```
|
||||||
|
|
||||||
**Erwartetes Ergebnis:** Beide Diffs sind leer.
|
|
||||||
|
|
||||||
Falls Unterschiede erscheinen: die abweichenden Rules identifizieren, die
|
|
||||||
entsprechenden Variablen in `host_vars/<hostname>/ipt-server.yml` nachpflegen
|
|
||||||
und den Diff wiederholen bevor weitergemacht wird.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Schritt 4 — Ansible als autoritative Quelle freischalten
|
## Schritt 4 — Ansible als autoritative Quelle freischalten und verifizieren
|
||||||
|
|
||||||
Erst wenn Schritt 3 erfolgreich war (leere Diffs), wird die Migration abgeschlossen.
|
Jetzt wird `fw_manage_config: true` gesetzt, damit Ansible die vier
|
||||||
Dazu `fw_manage_config: true` in der host_vars-Datei setzen:
|
host-spezifischen Config-Dateien aus den Templates schreibt:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# host_vars/<hostname>/ipt-server.yml
|
# host_vars/<hostname>/ipt-server.yml
|
||||||
@@ -132,16 +110,43 @@ fw_ext_interfaces:
|
|||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Dann erneut ausrollen:
|
**Vorschau:** Zeigt genau, was in den Config-Dateien geändert wird — hier
|
||||||
|
sorgfältig prüfen, ob die neuen Werte den alten entsprechen:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vorschau — zeigt jetzt auch die Config-Dateien im Diff:
|
|
||||||
ansible-playbook ipt-server.yml --limit <hostname> --check --diff
|
ansible-playbook ipt-server.yml --limit <hostname> --check --diff
|
||||||
|
```
|
||||||
|
|
||||||
# Anwenden:
|
**Anwenden:** Ansible schreibt die neuen Config-Dateien und startet die Firewall
|
||||||
|
automatisch neu (da sich die Dateien geändert haben):
|
||||||
|
|
||||||
|
```bash
|
||||||
ansible-playbook ipt-server.yml --limit <hostname>
|
ansible-playbook ipt-server.yml --limit <hostname>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Verifizieren:** Jetzt die neuen Rules mit dem gesicherten Stand vergleichen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh <hostname> '
|
||||||
|
iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||||
|
> /tmp/fw_after_v4.rules
|
||||||
|
ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||||
|
> /tmp/fw_after_v6.rules
|
||||||
|
echo "=== IPv4 diff ==="
|
||||||
|
diff /tmp/fw_before_v4.rules /tmp/fw_after_v4.rules
|
||||||
|
echo "=== IPv6 diff ==="
|
||||||
|
diff /tmp/fw_before_v6.rules /tmp/fw_after_v6.rules
|
||||||
|
'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Erwartetes Ergebnis:** Beide Diffs sind leer — die Ansible-generierten
|
||||||
|
Config-Dateien produzieren exakt dieselben Rules wie die bisher händisch
|
||||||
|
verwalteten.
|
||||||
|
|
||||||
|
Falls Unterschiede erscheinen: die abweichenden Rules identifizieren, die
|
||||||
|
entsprechenden Variablen in `host_vars/<hostname>/ipt-server.yml` nachpflegen,
|
||||||
|
erneut ausrollen und den Diff wiederholen.
|
||||||
|
|
||||||
Ab jetzt:
|
Ab jetzt:
|
||||||
- Ansible überschreibt die vier Config-Dateien bei jedem Run aus den Templates.
|
- Ansible überschreibt die vier Config-Dateien bei jedem Run aus den Templates.
|
||||||
- Bei Änderungen an Templates oder host_vars wird die Firewall automatisch
|
- Bei Änderungen an Templates oder host_vars wird die Firewall automatisch
|
||||||
@@ -191,9 +196,9 @@ am Anfang jedes generierten Templates:
|
|||||||
|
|
||||||
| Schritt | Befehl / Aktion | Wann |
|
| Schritt | Befehl / Aktion | Wann |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 1 | `extract-fw-host-vars.py` ausführen | Einmalig pro Host |
|
| 1 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host |
|
||||||
| 2 | `ansible-playbook ... --check --diff` + ausrollen | Einmalig pro Host |
|
| 2 | Erste Ausrollung (Safety-Guard aktiv) — Skripte + Units | Einmalig pro Host |
|
||||||
| 3 | iptables-Rules vergleichen (vor/nach Restart) | Einmalig pro Host |
|
| 3 | Aktuellen Rules-Stand auf dem Host sichern | Einmalig pro Host |
|
||||||
| 4 | `fw_manage_config: true` setzen + ausrollen | Einmalig pro Host |
|
| 4 | `fw_manage_config: true` + `--check --diff` + ausrollen + Rules vergleichen | Einmalig pro Host |
|
||||||
| 5 | Alte Rolle deaktivieren, git-Repo auf Host entfernen | Einmalig pro Host |
|
| 5 | Alte Rolle deaktivieren, git-Repo auf Host entfernen | Einmalig pro Host |
|
||||||
| — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |
|
| — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |
|
||||||
|
|||||||
Reference in New Issue
Block a user