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

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:

  1. Im Infrastruktur-Repository ins Unterverzeichnis ansible wechseln.

  2. Passwort einlesen:

    read -s pw
    
  3. Passwort verschlüsseln:

    echo -n "$pw" | uv run ansible-vault encrypt_string --vault-id ferrosoft@vaultpass
    
  4. Verschlüsselten Block kopieren (beginnt mit !vault | $ANSIBLE_VAULT...).

  5. Block als Variablen-Wert in die YAML-Datei einfügen.

Variablen-Referenz

PlaybookVariableBeschreibung
bootstrap.ymlfb_authorized_keysÖffentliche SSH-Schlüssel für root
bootstrap.ymlfb_operator_authorized_keysÖffentliche SSH-Schlüssel für operator
bootstrap.ymlfb_group_packagesAPT-Pakete, die installiert werden sollen
bootstrap.ymlfb_snapshot_enabledAutomatische Snapshots für BTRFS-Dateisysteme aktivieren
update-os.ymlauto_update_apply_updatesUnbeaufsichtigte Installation von Updates aktivieren
platform.ymlfp2_docker_registryName der privaten Container-Registry
platform.ymlfp2_docker_registry_userBenutzername für die Container-Registry
platform.ymlfp2_docker_registry_passwordPasswort für die Container-Registry
platform.ymlfp2_caddy_networkName des externen Netzwerks. Muss mit dem Wert im Configs-Environment übereinstimmen
platform.ymlfp2_compose_filesAuszuführende Compose-Dateien
platform.ymlfp2_migration_management_commandsDjango-Management-Befehle für die Migration

Backup-Variablen

Diese Variablen betreffen Sicherung und Wiederherstellung.

PlaybookVariableBeschreibung
platform.ymlfp2_restic_s3_locationStandort des S3-Buckets (Teil des fp2_restic_repository-Standardwerts)
platform.ymlfp2_restic_s3_bucketBucket-Name (Teil des fp2_restic_repository-Standardwerts)
platform.ymlfp2_restic_repositoryRestic-Repository-URL (Standard: Hetzner-Cloud-S3-URL aus fp2_restic_s3_location und fp2_restic_s3_bucket)
platform.ymlfp2_restic_s3_access_keyS3-Access-Key — über Hetzner Cloud Console beziehen
platform.ymlfp2_restic_s3_secret_keyS3-Secret-Key — über Hetzner Cloud Console beziehen
platform.ymlfp2_restic_passwordPasswort zur Verschlüsselung der Sicherungsdateien
platform.ymlfp2_backup_keep_dailyAnzahl täglicher Sicherungen (Standard: 7)
platform.ymlfp2_backup_keep_weeklyAnzahl wöchentlicher Sicherungen (Standard: 4)
platform.ymlfp2_backup_keep_monthlyAnzahl monatlicher Sicherungen (Standard: 6)
platform.ymlfp2_backup_job_scheduleZeitplan des Sicherungs-Jobs — systemd.time calendar events (Standard: *-*-* 03:00:00)
platform.ymlfp2_backup_job_timeout_secTimeout 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.

PlaybookVariableBeschreibung
platform.ymlfp2_configs_srcLokales Quellverzeichnis mit den vom Configs-Repository erzeugten Konfigurationsdateien. Wird nach /etc/ferrosoft auf den Server übertragen.
platform.ymlfp2_docker_registry_reauthorizeNeu-Authentifizierung an der Registry erzwingen
platform.ymlfp2_migration_vacuumdbvacuumdb im Postgres-Container ausführen