Konfigurationsmanagement
Das Infrastruktur-Repository enthält
YAML-Dateien mit Ansible-Variablen, die das Verhalten des Servers steuern.
Die Dateien liegen in ansible/playbooks/group_vars.
Verfügbare Host-Gruppen
Das Gruppen-Feature von Ansible ist hier bewusst auf das Nötigste reduziert
— es gibt nur einen Server. Man schickt keine Division auf einen Mann. Der ansible-playbook-Wrapper trägt den per
--host angegebenen Host automatisch in die Gruppen all, ferrosoft,
platform und wrapper ein. Variablen in group_vars für jede dieser
Gruppen treffen daher immer die Zielmaschine.
Variablen setzen
Variable in folgende Datei eintragen:
ansible/playbooks/group_vars/<GRUPPEN_NAME>/<UNIT_NAME>.yml
<GRUPPEN_NAME>— eine der verfügbaren Host-Gruppen<UNIT_NAME>— frei wählbar; kurzer, thematischer Name, z.B.ssh
Nach der Änderung das betreffende Playbook erneut ausführen.
Variablen verschlüsseln
⚠️ BEFEHL: Passwörter und sensible Daten werden ausnahmslos mit Ansible Vault verschlüsselt. Kein Klartext im Repository. Kein Klartext im Commit. Keine Ausnahmen. Kein Pardon.
So verschlüsseln Sie einen Wert:
-
Im Infrastruktur-Repository ins Unterverzeichnis
ansiblewechseln. -
Passwort einlesen:
read -s pw -
Passwort verschlüsseln:
echo -n "$pw" | uv run ansible-vault encrypt_string --vault-id ferrosoft@vaultpass -
Verschlüsselten Block kopieren (beginnt mit
!vault | $ANSIBLE_VAULT...). -
Block als Variablen-Wert in die YAML-Datei einfügen.
Variablen-Referenz
| Playbook | Variable | Beschreibung |
|---|---|---|
| bootstrap.yml | fb_authorized_keys | Öffentliche SSH-Schlüssel für root |
| bootstrap.yml | fb_operator_authorized_keys | Öffentliche SSH-Schlüssel für operator |
| bootstrap.yml | fb_group_packages | APT-Pakete, die installiert werden sollen |
| bootstrap.yml | fb_snapshot_enabled | Automatische Snapshots für BTRFS-Dateisysteme aktivieren |
| update-os.yml | auto_update_apply_updates | Unbeaufsichtigte Installation von Updates aktivieren |
| platform.yml | fp2_docker_registry | Name der privaten Container-Registry |
| platform.yml | fp2_docker_registry_user | Benutzername für die Container-Registry |
| platform.yml | fp2_docker_registry_password | Passwort für die Container-Registry |
| platform.yml | fp2_caddy_network | Name des externen Netzwerks. Muss mit dem Wert im Configs-Environment übereinstimmen |
| platform.yml | fp2_compose_files | Auszuführende Compose-Dateien |
| platform.yml | fp2_migration_management_commands | Django-Management-Befehle für die Migration |
Backup-Variablen
Diese Variablen betreffen Sicherung und Wiederherstellung.
| Playbook | Variable | Beschreibung |
|---|---|---|
| platform.yml | fp2_restic_s3_location | Standort des S3-Buckets (Teil des fp2_restic_repository-Standardwerts) |
| platform.yml | fp2_restic_s3_bucket | Bucket-Name (Teil des fp2_restic_repository-Standardwerts) |
| platform.yml | fp2_restic_repository | Restic-Repository-URL (Standard: Hetzner-Cloud-S3-URL aus fp2_restic_s3_location und fp2_restic_s3_bucket) |
| platform.yml | fp2_restic_s3_access_key | S3-Access-Key — über Hetzner Cloud Console beziehen |
| platform.yml | fp2_restic_s3_secret_key | S3-Secret-Key — über Hetzner Cloud Console beziehen |
| platform.yml | fp2_restic_password | Passwort zur Verschlüsselung der Sicherungsdateien |
| platform.yml | fp2_backup_keep_daily | Anzahl täglicher Sicherungen (Standard: 7) |
| platform.yml | fp2_backup_keep_weekly | Anzahl wöchentlicher Sicherungen (Standard: 4) |
| platform.yml | fp2_backup_keep_monthly | Anzahl monatlicher Sicherungen (Standard: 6) |
| platform.yml | fp2_backup_job_schedule | Zeitplan des Sicherungs-Jobs — systemd.time calendar events (Standard: *-*-* 03:00:00) |
| platform.yml | fp2_backup_job_timeout_sec | Timeout des Sicherungs-Jobs (Standard: 1 Stunde) |
Ad-Hoc-Variablen
Diese Variablen per -e-Flag direkt beim Aufruf von ansible-playbook
übergeben — in den Gruppen-Variablen sind sie fehl am Platz.
| Playbook | Variable | Beschreibung |
|---|---|---|
| platform.yml | fp2_configs_src | Lokales Quellverzeichnis mit den vom Configs-Repository erzeugten Konfigurationsdateien. Wird nach /etc/ferrosoft auf den Server übertragen. |
| platform.yml | fp2_docker_registry_reauthorize | Neu-Authentifizierung an der Registry erzwingen |
| platform.yml | fp2_migration_vacuumdb | vacuumdb im Postgres-Container ausführen |