Terraform in der Gemeinschaft: Planung der PR, Anwendung bei Fusion
Hör auf, Terraform von Laptops aus zu betreiben. Wie ich es automatisiert habe.
Hör auf, Terraform von Laptops aus zu betreiben. Wie ich es automatisiert habe.

In vielen Teams wird Terraform immer noch von jemandem's Laptop aus betrieben. Sie ziehen den neuesten Code, laufen planSchau, lauf! apply- Ich weiß . Es funktioniert, bis es nicht funktioniert: jemand bewirbt eine alte Niederlassung, zwei Personen gleichzeitig, der Laptop hat verschiedene Anbieterversionen oder die einzige Person mit Produktionsnachweisen ist im Urlaub.
Die Lösung ist ein einfacher, bekannter Workflow: Planung bei Pull-Anfrage, Anwendung bei Fusion- Ich weiß . Ich habe es so eingerichtet.
terraform plan und veröffentlicht den Plan als Kommentar zur Pull-Anfrage.terraform apply Mit dem Plan, vom Hauptzweig.Alles wird überprüft, alles wird protokolliert, niemand braucht Produktionsinformationen auf seinem Laptop, und die Hauptniederlassung spiegelt immer wider, was eingesetzt wird.
Der Plan ist die echte Veränderung. Überprüfen Sie den Plan genauso sorgfältig wie den Code.
Atlantis ist ein Open-Source-Server, der genau für diesen Workflow entwickelt wurde. Es hört auf, um Anforderung Ereignisse zu ziehen, und Sie steuern es mit Kommentaren:
plan und Kommentare zur Ausgabe.atlantis apply und es gilt, dann kommentiert das Ergebnis.Atlantis läuft in Ihrer eigenen Infrastruktur (oft auf Kubernetes), so dass Anmeldeinformationen niemals Ihre Umgebung verlassen. Es ist einfach, im Kampf getestet und kostenlos. Sie müssen es hosten und pflegen.
Sie können den gleichen Workflow in Ihrem normalen Informanten aufbauen. Eine vereinfachte GitHub-Actions-Version:
name: terraform
on:
pull_request:
paths: ["infrastructure/**"]
push:
branches: [main]
paths: ["infrastructure/**"]
permissions:
contents: read
id-token: write
pull-requests: write
jobs:
terraform:
runs-on: ubuntu-latest
defaults:
run:
working-directory: infrastructure/live/production/network
steps:
- uses: actions/checkout@<sha> # v4
- uses: hashicorp/setup-terraform@<sha> # v3
- uses: aws-actions/configure-aws-credentials@<sha> # v4
with:
role-to-assume: arn:aws:iam::123456789012:role/terraform-${{ github.event_name == 'push' && 'apply' || 'plan' }}
aws-region: eu-central-1
- run: terraform init -input=false
- run: terraform plan -input=false -out=tfplan
- if: github.event_name == 'pull_request'
run: terraform show -no-color tfplan > plan.txt
# post plan.txt as a PR comment with your preferred action
- if: github.event_name == 'push'
run: terraform apply -input=false tfplan
Dinge , die man beachten sollte:
main- Ich weiß . Die Vertrauenspolitik beschränkt, welche Zweigstelle welche Rolle übernehmen darf.Eine Feinheit: Der Plan für die Pull-Anfrage und die Anwendung nach dem Merge können sich unterscheiden, wenn sich der Hauptbetrieb dazwischen ändert. Die sichere Lösung ist, die Fusion neu zu planen (wie oben) und diesen Plan anzuwenden.
"TACOS" (Terraform Automation and Collaboration Software) ist der Spitzname für Plattformen, die dafür entwickelt wurden: HCP Terraform, Raumfahrt, Umgebung, Scalr, Ausrüstung IaCM und andere. Sie fügen hinzu:
Sie kosten Geld, sparen aber für größere Organisationen viel Aufbau und Wartung.
Wer kann Änderungen der Infrastruktur genehmigen? Einige praktische Regeln:
Verwahren Sie nie langlebige Cloud-Schlüssel in der Information für Terraform. Verwenden Sie OIDC mit jeder großen Cloud und definieren Sie die Rollen genau. Kombinieren Sie das mit Remote, verschlüsseltem, gesperrtem Zustand, und die empfindlichsten Teile Ihres Setups berühren nie den Laptop eines Entwicklers.
Wählen Sie einen Terraform-Stack, idealerweise einen mit geringem Risiko. Stellen Sie zuerst einen Plan-on-PR mit einer nur-lesbaren Rolle ein, damit sich das Team daran gewöhnt, Pläne zu überprüfen. Dann fügen Sie Apply-on-Merge mit einer separaten Rolle hinzu. Sobald es funktioniert, rollen Sie es auf die anderen Stapel aus und nehmen Sie den Produktions-Schreibzugriff von Laptops.
Meine Meinung: Infrastrukturänderungen verdienen die gleiche Pipeline-Disziplin wie Anwendungscode. Überprüfen Sie den Plan, verschmelzen Sie und lassen Sie den Roboter sich bewerben.
Desly