TM1: Infrastructure as Code (Terraform-Grundlagen)
Zuletzt aktualisiert am
Warum Infrastructure as Code?
Abschnitt betitelt „Warum Infrastructure as Code?“In modernen souveränen Cloud-Umgebungen wird Infrastruktur niemals über manuelle Interaktionen in der Oberfläche provisioniert. Stattdessen wird Infrastruktur mit derselben Sorgfalt wie Software-Quellcode behandelt. Terraform innerhalb eines zentralisierten Pipeline-Frameworks bietet vier grundlegende Vorteile.
- Idempotenz: Idempotenz garantiert, dass die mehrfache Ausführung derselben Konfigurationsdateien stets denselben Live-Zustand der Umgebung erzeugt.
- Versionskontrolle: Die Versionskontrolle verfolgt alle Infrastruktur-Änderungen in Git-Repositories und schafft Nachvollziehbarkeit über Pull Requests und Peer-Code-Reviews.
- Geschwindigkeit und Skalierung: Geschwindigkeit und Skalierung ermöglichen es, Hunderte identische Umgebungen über Regionen hinweg mit demselben minimalen Aufwand wie eine einzelne Instanz auszurollen.
- Compliance-Durchsetzung: Die Compliance-Durchsetzung validiert Security-Guardrails, Kostenkontrollen und Organisationsrichtlinien, bevor eine physische Ressource erzeugt wird.
Der STACKIT Terraform Provider
Abschnitt betitelt „Der STACKIT Terraform Provider“Der offizielle STACKIT Terraform Provider ist das primäre deklarative Gateway zur STACKIT-API-Plattform. Der STACKIT Terraform Provider interpretiert High-Level-Konfigurationsdateien (.tf) und übersetzt sie in vorhersehbare, authentifizierte API-Anfragen gegen souveräne Endpunkte.
Die vollständige Schema-Dokumentation für alle unterstützten Ressourcen und Data Sources wird in der offiziellen STACKIT Provider Registry gepflegt.
Kernfunktionen des Providers
Abschnitt betitelt „Kernfunktionen des Providers“- Ressourcen-Abdeckung: Der STACKIT Terraform Provider verwaltet den vollständigen Lifecycle von Compute-Instanzen, Virtual Private Clouds (VPC), Block Storage und Managed Services wie der STACKIT Kubernetes Engine (SKE).
- Zentralisierte Authentifizierung: Der STACKIT Terraform Provider unterstützt nativ kurzlebige Service-Account-Tokens und beseitigt fest codierte Anmeldedaten in Engineering-Umgebungen.
- State-Isolation: Der STACKIT Terraform Provider unterstützt kryptografisch gesicherte Remote-State-Backends, um eine Single Source of Truth zu garantieren und gleichzeitige Schreibkollisionen zu verhindern.
Der automatisierte Pipeline-Flow
Abschnitt betitelt „Der automatisierte Pipeline-Flow“Innerhalb des STACKIT Cloud Frameworks ist das Ausführen von Terraform-Binaries auf lokalen Entwicklerrechnern eingeschränkt. Alle strukturellen Änderungen müssen über eine isolierte, identitätsgeprüfte CI/CD-Pipeline laufen.
-
Code: Definiere deine Ziel-State-Konfiguration (zum Beispiel SKE-Cluster oder Object-Storage-Buckets) mit Standard-HCL-Syntax in
.tf-Dateien. -
Plan: Die Pipeline führt
terraform planaus, um das strukturelle Delta zu berechnen und eine transparente Vorschau von Ergänzungen, Änderungen und Löschungen zu erstellen. -
Review: Ein Peer-Cloud-Engineer validiert den generierten Execution-Plan im Pull-Request-Interface.
-
Apply: Nach einem erfolgreichen Merge in den Main-Branch führt die Pipeline
terraform applyaus, um die definierten Ressourcen auf STACKIT zu materialisieren. -
State-Sicherung: Der aktualisierte State-Snapshot wird sicher in ein zentralisiertes Remote-Storage-Backend zurückgeschrieben.
Hands-on: ein Projekt initialisieren
Abschnitt betitelt „Hands-on: ein Projekt initialisieren“Um mit STACKIT-Ressourcen zu interagieren, muss der STACKIT Terraform Provider explizit deklariert und mit Service-Account-Anmeldedaten authentifiziert werden, die über den Pipeline-Kontext injiziert werden.
1. Provider-Konfiguration
Abschnitt betitelt „1. Provider-Konfiguration“Erstelle eine Standard-main.tf-Datei und gib den erforderlichen Provider-Block sowie die Versions-Constraints an.
terraform { required_providers { stackit = { source = "stackitcloud/stackit" version = "~> 0.0" } }}
provider "stackit" { # Authentication is handled via pipeline-injected environment variables: # STACKIT_SERVICE_ACCOUNT_TOKEN}2. Definition der Projekt-Ressource
Abschnitt betitelt „2. Definition der Projekt-Ressource“Die Ressource stackit_project etabliert den logischen Tenant-Container der Organisation innerhalb der souveränen STACKIT-Plattform-Topologie.
resource "stackit_project" "enterprise_core" { name = "Framework-Core-Infrastructure" container_id = "your-target-parent-folder-or-org-id"}3. Optionale Enterprise-Security- und Netzwerk-Integration
Abschnitt betitelt „3. Optionale Enterprise-Security- und Netzwerk-Integration“Abhängig von den Compliance-Blueprints deiner Organisation können Projekte nach Bedarf mit erweiterten Sicherheitsmustern angereichert werden.
- SNA-Architekturmuster: Die Integration der Secure Network Architecture (SNA) kann umgesetzt werden, wenn Governance-Modelle des Kunden eine strikte Netzwerk-Isolation erfordern.
- Supply-Chain-Scanning: Pipeline-Konfigurationen können automatische Helm- und Terraform-Scanning-Engines (etwa Snyk) integrieren, um Konfigurations-Drift und Schwachstellen zu erkennen.