Zum Inhalt

Terraform für Authentik einrichten

Ungeprüft

Diese Anleitung ist noch nicht durchgespielt worden; Befehle, Bezeichnungen und erwartete Ausgaben können abweichen. Was noch zu prüfen ist, steht in todo/doku.md.

Ziel

Terraform kann sich mit einem neuen API-Token an Authentik anmelden, und der State in apps/authentik/tf-core/ passt zu Authentik.

Voraussetzungen

Nötig ist das, wenn Authentik neu aufgesetzt wird oder das Token von terraform-mgmt getauscht werden muss. Für einen Tausch reichen die Schritte 1 bis 3.

Schritte

1. Service-Account anlegen

Leg in der Admin-Oberfläche von Authentik unter Directory → Users mit „Create Service Account“ den Service-Account terraform-mgmt an.

Erwartet: Authentik zeigt den Benutzernamen und ein Token an. Dieses Token ist ein App-Passwort; Terraform braucht ein API-Token (Schritt 2).

Gibt es den Account schon, weil du nur das Token tauschst, überspring diesen Schritt.

2. Token auf API-Token umstellen

Öffne unter Directory → Tokens and App passwords das Token von terraform-mgmt, stell „Intent“ von „App password“ auf „API Token“ um und speichere. Kopiere das Token dann mit „Copy token“.

Erwartet: In der Liste steht beim Token von terraform-mgmt als Intent „API Token“.

3. Token ablegen

Leg das Token im Vaultwarden ab und trag es in deine .envrc als TF_VAR_authentik_token ein, wie in Arbeitsrechner einrichten, Schritt 9. Sag allen anderen Admins Bescheid, dass sie es in ihrer .envrc ebenfalls tauschen müssen.

Bash
1
2
3
4
cd apps/authentik/tf-core
echo ${TF_VAR_authentik_token:+gesetzt}
terraform init
terraform plan

Erwartet: gesetzt, nach init Terraform has been successfully initialized!, und plan meldet keinen 401 oder 403. Hast du nur das Token getauscht, zeigt plan No changes. Your infrastructure matches the configuration., und du bist fertig.

4. System-Einstellungen und Brand importieren

Nur bei einem neu aufgesetzten Authentik mit leerem State. Authentik hat genau einen Satz System-Einstellungen und legt die Standard-Brand selbst an; Terraform kann beides nicht neu anlegen, sondern muss die vorhandenen übernehmen.

Die ID der Brand findest du in der Admin-Oberfläche unter System → Brands, beim Eintrag authentik-default.

Bash
terraform import authentik_system_settings.settings system_settings
terraform import authentik_brand.default <id-der-brand>

Erwartet: beide Male Import successful!.

5. Alles andere ausrollen

Bash
terraform plan
terraform apply

Erwartet: plan legt alle übrigen Resources an und ändert die System-Einstellungen und die Brand auf die Werte aus main.tf; apply endet mit Apply complete!. Danach dasselbe in apps/authentik/tf-groups/, und den State aus beiden Ordnern committen und pushen wie in Terraform ausführen, Schritt 9.

Prüfen

  • terraform plan zeigt in tf-core und tf-groups No changes. Your infrastructure matches the configuration.
  • Die Login-Seite unter https://login.garage-lab.de zeigt Titel und Logo aus der Brand.

Wenn etwas schiefgeht