---
title: "TM1: Infrastructure as Code (Terraform-Grundlagen)"
description: "Beherrsche automatisiertes Provisioning von Cloud-Ressourcen mit dem offiziellen STACKIT Terraform Provider in sicheren, automatisierten CI/CD-Pipelines."
scfAsset:
  maintainers:
    - user: "tobias.mueller"
  managed: false
  category: "guide"
  external: false
  tags: ["IaC", "Terraform", "Automation", "wip"]
source_url: "https://framework.stackit.cloud/de/architecture/assetcontainer/tm/tm1-iac-terraform-basics/"
source_file: "docs/de/architecture/assetcontainer/tm/tm1-iac-terraform-basics.mdx"
---

<Aside type="note" title="Asset Profile">
  **Zeitaufwand:** 75 Minuten. **Fokus:** deklarative Automatisierung. **Lernziele:** den STACKIT Terraform Provider verstehen, sichere token-basierte Authentifizierung für automatisiertes CI/CD umsetzen und souveräne STACKIT-Ressourcen über eine git-getriggerte Pipeline provisionieren.
</Aside>

## 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

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 <LinkChip href="https://registry.terraform.io/providers/stackitcloud/stackit/latest/docs">STACKIT Provider Registry</LinkChip> gepflegt.

### 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

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.

<Steps>

1. **Code**: Definiere deine Ziel-State-Konfiguration (zum Beispiel SKE-Cluster oder Object-Storage-Buckets) mit Standard-HCL-Syntax in `.tf`-Dateien.

2. **Plan**: Die Pipeline führt `terraform plan` aus, um das strukturelle Delta zu berechnen und eine transparente Vorschau von Ergänzungen, Änderungen und Löschungen zu erstellen.

3. **Review**: Ein Peer-Cloud-Engineer validiert den generierten Execution-Plan im Pull-Request-Interface.

4. **Apply**: Nach einem erfolgreichen Merge in den Main-Branch führt die Pipeline `terraform apply` aus, um die definierten Ressourcen auf STACKIT zu materialisieren.

5. **State-Sicherung**: Der aktualisierte State-Snapshot wird sicher in ein zentralisiertes Remote-Storage-Backend zurückgeschrieben.

</Steps>

---

## 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

Erstelle eine Standard-`main.tf`-Datei und gib den erforderlichen Provider-Block sowie die Versions-Constraints an.

```hcl
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

Die Ressource `stackit_project` etabliert den logischen Tenant-Container der Organisation innerhalb der souveränen STACKIT-Plattform-Topologie.

```hcl
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

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.

<Aside type="note" title="SNA Reference Architecture">
  Die Secure Network Architecture (SNA) ist optional und wird durch individuelle Kunden-Architektur-Blueprints bestimmt, ist aber für hochsichere oder regulierte Umgebungen sehr zu empfehlen. Implementierungsdetails findest du in der dedizierten Landing-Zone-Dokumentation unter [Netzwerkarchitektur](/de/migration/design-and-mobilize/landing-zones/network-architecture/).
</Aside>
