Januar 12, 2026

Terraform

Wer schon einmal versucht hat, manuell in der Google Cloud Ressourcen anzulegen, weiß: Klickt man sich durch die Weboberfläche, wird es schnell unübersichtlich.
Die Lösung heißt Infrastructure-as-Code. Terraform ist ein Open-Source-Werkzeug von HashiCorp, das Cloud-Ressourcen automatisiert, wiederholbar und versionskontrolliert bereitstellt.

In diesem Artikel wird Schritt für Schritt erklärt, wie man mit Terraform und GCP einfache, aber nützliche Data-Science-nahe Ressourcen erstellen kann.

Ein einfaches Beispiel

Terraform nutzt eine deklarative Sprache namens HCL (HashiCorp Configuration Language), um Cloud-Ressourcen zu beschreiben.
Du sagst also nicht wie etwas gebaut werden soll, sondern was du brauchst.
Um beispielsweise ein Bucket in der EU zu erstellen der gelöscht werden darf schreibt man:

resource "google_storage_bucket" "data_bucket" {
  name          = "mein-datascience-bucket"
  location      = "EU"
  force_destroy = true
}

Voraussetzungen & Installation

Terraform kann hier heruntergeladen werden: https://developer.hashicorp.com/terraform/downloads

Dort gibt es auch Erklärungen zur Installation. Weitere Infos findet man hier: https://developer.hashicorp.com/terraform/tutorials/gcp-get-started/install-cli

Unter Windows lädt man einfach die entsprechenden Dateien herunter und kopiert die Datei „terraform.exe“ dann in ein Verzeichnis das als Pfad registriert ist (bspw. C:\Windows).

Für die Arbeit mit GCP benötigt man natürlich auch ein GCP-Konto und Google Cloud CLI. Mit letzterer legen wir ein neues GCP-Projekt an:

gcloud projects create my-terraform-2006 --set-as-default
gcloud auth application-default login
gcloud auth application-default set-quota-project my-terraform-2026

Danach muss noch Billing aktiviert werden. Seinen Account findet man über:

gcloud billing accounts list

Das Aktivieren geht dann so:

gcloud billing projects link my-terraform-2026 --billing-account=xxxx-xxxx-xxxx

Außerdem muss man die Compute Engine API aktivieren:

gcloud services enable compute.googleapis.com --project=my-terraform-2026

Funktionsweise von Terraform

Wichtige Grundlage in Terraform ist, dass alle .tf-Dateien in einem Verzeichnis ausführt werden (ohne Unterordner). Terraform unterscheidet nicht nach Dateinamen oder Reihenfolge. Stattdessen analysiert Terraform alle Inhalte und erstellt einen Dependency-Graph, der der Ausführung zugrundliegt.

Darüber hinaus ist wichtig zu verstehen, dass man mit Terraform einen Soll-Zustand definiert. Terraform überprüft dann für jedes Element, ob es bereits verfügbar ist. Falls der Soll-Zustand vom Ist-Zustand abweicht, bspw. weil eine Ressource noch nicht angelegt ist, dann wird diese erzeugt.

Ist eine Ressource bereits vorhanden, dann wird dieser Schritt übersprungen, da der Soll-Zustand bereits erreicht ist.

Build

In einem neuen Ordner erstellen wir nun eine Datei namens „main.tf“.

  • „terraform“ spezifiziert die Einstellungen. Hier wird der Hostname und der Providertype für Google festgelegt.
  • „provider“ legt die Einstellungen für GCP fest, hier also Projektname, Region und Zone.
  • „ressource“ legt dann Komponenten der Infrastruktur fest. Hier wird ein Netzwerk festgelegt.
terraform {
  required_providers {
    google = {
      source = "hashicorp/google"
      version = "6.8.0"
    }
  }
}

provider "google" {
  project = "my-terraform-2026"
  region  = "europe-west3"
  zone    = "europe-west3-a"
}

resource "google_compute_network" "vpc_network" {
  name = "terraform-network"
}


Um den Code auszuführen muss im entsprechenden Verzeichnis zunächst Terraform initiiert werden:

terraform init

Terraform erstellt daraufhin im Ordner ein verstecktes Verzeichnis mit dem „.terraform“.

Darüber hinaus empfiehlt Terraform die korrekte Formatierung der Konfigurationsdateien. Dies kann automatisch angepasst werden mit dem Befehl:

terraform fmt

Außerdem kann die Konfiguration vor Ausführung überprüft werden:

terraform validate

Optional kann man sich auch noch anzeigen lassen, was genau Terraform ausführen wird:

terraform plan

Um die Konfiguration nun tatsächlich auszuführen, verwendet man den Befehl apply:

terraform apply

Das Ergebnis kann man sich danach anzeigen lassen:

terraform show

Beispiele für weitere Ressourcen

Cloud Storage-Bucket

Ein einfaches Cloud Storage Bucket kann so erzeugt werden:

resource "google_storage_bucket" "data_bucket" {
  name          = "mein-bucket"
  location      = "EU"
  storage_class = "STANDARD"
  force_destroy = true
}

Compute Engine VM für JupyterLab

Um eine Compute Instanz zu erstellen und JupyterLab zu installieren, kann man dieses Skript verwenden:

resource "google_compute_instance" "jupyter_vm" {
  name         = "jupyter-vm"
  machine_type = "e2-micro" 
  zone         = "europe-west1-b"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-12"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }

  metadata_startup_script = <<-EOT
    #!/bin/bash
    apt-get update
    apt-get install -y python3-pip
    pip3 install jupyter
    nohup jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root &
  EOT
}

Nach dem Ausführen (terraform apply) kannst du dich mit der externen IP-Adresse der VM verbinden. Das geht allerdings nur von der Google Cloud Console aus, da SSH benötigt wird. Du findest das unter Compute Engine / VM-Instanzen. Dort klickst Du auf Verbinden und wählst „Im Browserfenster an benutzerdefiniertem Port öffnen“. Der Port für JupyterLab lautet 8888.

Ansonsten kann man sich mit SSH auch direkt auf die virtuelle Maschine verbinden:

http://<EXTERNAL_IP>:8888

Aufräumen

Terraform löscht alle Ressourcen, die du erstellt hast mit einem Befehl – super praktisch, um Kosten zu vermeiden:

terraform destroy

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert