Update ipt-server role: specify hosts in ipt-server.yml and add configuration for cloud-01.oopen.de
This commit is contained in:
@@ -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
|
||||
den bestehenden Config-Dateien exakt dieselben iptables-Rules erzeugt wie aktuell
|
||||
geladen.
|
||||
Bevor Ansible die Config-Dateien überschreibt, wird der aktuelle Zustand der
|
||||
laufenden Firewall-Rules gesichert. Das ist der Referenzwert für den späteren
|
||||
Vergleich.
|
||||
|
||||
```bash
|
||||
ssh <hostname> '
|
||||
# Aktuellen Stand einfrieren (Timestamps und Zähler normalisieren)
|
||||
iptables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||
> /tmp/fw_before_v4.rules
|
||||
ip6tables-save | grep -v "^#" | sed "s/\[[0-9]*:[0-9]*\]/[0:0]/g" \
|
||||
> /tmp/fw_before_v6.rules
|
||||
|
||||
# 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
|
||||
echo "Stand gesichert."
|
||||
'
|
||||
```
|
||||
|
||||
**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.
|
||||
Dazu `fw_manage_config: true` in der host_vars-Datei setzen:
|
||||
Jetzt wird `fw_manage_config: true` gesetzt, damit Ansible die vier
|
||||
host-spezifischen Config-Dateien aus den Templates schreibt:
|
||||
|
||||
```yaml
|
||||
# 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
|
||||
# Vorschau — zeigt jetzt auch die Config-Dateien im 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>
|
||||
```
|
||||
|
||||
**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:
|
||||
- Ansible überschreibt die vier Config-Dateien bei jedem Run aus den Templates.
|
||||
- Bei Änderungen an Templates oder host_vars wird die Firewall automatisch
|
||||
@@ -191,9 +196,9 @@ am Anfang jedes generierten Templates:
|
||||
|
||||
| Schritt | Befehl / Aktion | Wann |
|
||||
|---|---|---|
|
||||
| 1 | `extract-fw-host-vars.py` ausführen | Einmalig pro Host |
|
||||
| 2 | `ansible-playbook ... --check --diff` + ausrollen | Einmalig pro Host |
|
||||
| 3 | iptables-Rules vergleichen (vor/nach Restart) | Einmalig pro Host |
|
||||
| 4 | `fw_manage_config: true` setzen + ausrollen | Einmalig pro Host |
|
||||
| 1 | `extract-fw-host-vars.py` ausführen, Ergebnis prüfen | Einmalig pro Host |
|
||||
| 2 | Erste Ausrollung (Safety-Guard aktiv) — Skripte + Units | Einmalig pro Host |
|
||||
| 3 | Aktuellen Rules-Stand auf dem Host sichern | 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 |
|
||||
| — | Änderungen: host_vars editieren + `ansible-playbook` | Ab jetzt immer so |
|
||||
|
||||
Reference in New Issue
Block a user