Terraform ausführen¶
Ziel¶
Deine Änderung an Authentik ist mit Terraform ausgerollt, und die Dateien und der State stehen im Repo auf Codeberg.
Voraussetzungen¶
- dein Rechner ist eingerichtet, Terraform installiert (Arbeitsrechner einrichten)
- gelesen: Terraform, Authentik, Gruppenmodell in Authentik und Git-Workflow
Die Schritte gelten für beide Ordner, apps/authentik/tf-core/ und apps/authentik/tf-groups/.
Betrifft deine Änderung beide, machst du die Schritte 2 bis 9 erst in tf-core, dann in tf-groups.
Nie zwei Leute gleichzeitig
Der State liegt im Repo; führen zwei Leute gleichzeitig terraform apply aus, passt der State danach nicht mehr zu Authentik.
Sag in Signal Bescheid, bevor du anfängst, und push den State sofort nach dem apply.
Schritte¶
1. Neuesten Stand holen¶
Im Repo-Ordner:
Erwartet: nothing to commit, working tree clean.
2. In den Ordner wechseln¶
Erwartet: gesetzt.
Das Token des Service-Accounts terraform-mgmt setzt direnv aus .envrc im Repo-Ordner.
Bleibt die Zeile leer, fehlt es dort noch; trag es ein wie in Arbeitsrechner einrichten, Schritt 9.
3. Terraform vorbereiten¶
Erwartet: terraform version zeigt die Version aus .tool-versions im selben Ordner; terraform init endet mit Terraform has been successfully initialized!.
init lädt den Provider in der Version, die in .terraform.lock.hcl steht; bei späteren Durchläufen ist es schnell fertig und schadet nicht.
4. plan vor der Änderung¶
| Bash | |
|---|---|
Erwartet: No changes. Your infrastructure matches the configuration.
Zeigt plan schon jetzt Änderungen, hat jemand in der Web-Oberfläche von Authentik etwas an einem Objekt geändert, das Terraform verwaltet, oder ausgerollt und nicht gepusht. Hör hier auf und geh nach plan zeigt unerwartete Änderungen vor; dort gilt für Authentik dasselbe wie für einen Host.
5. Dateien ändern und formatieren¶
Was du in welcher Datei änderst, steht in der Anleitung zu deiner Aufgabe, etwa App per OIDC anbinden oder Gruppe für eine App anlegen.
Erwartet: terraform fmt nennt höchstens die Dateien, deren Einrückung es korrigiert hat; terraform validate meldet Success! The configuration is valid.
Sonst stehen in der Meldung Datei und Zeile des Fehlers.
6. plan nach der Änderung¶
| Bash | |
|---|---|
Erwartet: nur deine Änderung, am Ende etwa Plan: 1 to add, 0 to change, 0 to destroy.
Vor jeder Resource steht, was passiert: + wird angelegt, ~ geändert, - gelöscht, -/+ gelöscht und neu angelegt.
Steht bei einer bestehenden Resource -/+ oder must be replaced, prüf, ob das gewollt ist: Wird eine Gruppe neu angelegt, verliert sie ihre Mitglieder.
Zeigt plan mehr als deine Änderung, roll nicht aus, sondern geh nach plan zeigt unerwartete Änderungen vor.
7. Ausrollen¶
| Bash | |
|---|---|
Erwartet: noch einmal derselbe plan, dann Do you want to perform these actions? und Enter a value:.
Tippe yes; jede andere Antwort bricht ab, ohne etwas zu ändern.
Am Ende steht Apply complete! Resources: 1 added, 0 changed, 0 destroyed. mit den Zahlen aus dem plan.
8. Prüfen¶
| Bash | |
|---|---|
Erwartet: No changes. Your infrastructure matches the configuration.
Sieh dir das Ergebnis außerdem in der Admin-Oberfläche von Authentik an, etwa die neue Application oder Gruppe.
9. Dateien und State committen und sofort pushen¶
Erwartet: git status zeigt unter Changes to be committed: deine .tf-Dateien und terraform.tfstate; terraform.tfstate.backup und .terraform/ tauchen nicht auf, weil .gitignore sie ausschließt.
Nach git push steht am Ende main -> main.
Die Commit-Message schreibst du wie in Änderung ausrollen, Schritt 9.
Prüfen¶
terraform planzeigt in jedem Ordner, in dem du ausgerollt hast, „No changes“.git statuszeigtYour branch is up to date with 'origin/main'.undnothing to commit, working tree clean.
Wenn etwas schiefgeht¶
- plan oder apply melden
403oder401: Das Token in.envrcstimmt nicht oder ist abgelaufen; hol es neu aus dem Vaultwarden, trag es ein und führdirenv allowaus. terraform initoder plan meldenInconsistent dependency lock file:terraform initnoch einmal ausführen; ändert sich dabei.terraform.lock.hcl, frag in Signal nach, bevor du sie committest.- apply bricht mittendrin ab: Ein Teil ist dann schon in Authentik angelegt und steht auch im State. Committe und pushe den State trotzdem (Schritt 9), damit er zu Authentik passt, und frag dann in Signal nach.
- Push abgelehnt oder Konflikt in
terraform.tfstate: nicht von Hand zusammenführen, sondern Git-Konflikt lösen und nachfragen. - Allgemeines: Terraform-Doku: Kommandozeile und Authentik-Provider in der Terraform Registry