linux-suse-opensuse automation terraform cloud sles iac

Terraform on SUSE: Cloud & ALP Deployment (Artikel 171)

Bereitstellung von SUSE-Infrastruktur mittels Terraform. Erfahren Sie alles über SUSE Cloud-Images, das Provisioning in Public Clouds und die Vorbereitung auf die Adaptive Linux Platform (ALP).

# Terraform on SUSE: Infrastruktur per Code im SUSE-Stil

TL;DR / Management Summary Terraform ist das Standard-Tool, um SLES-Instanzen in der Cloud (AWS, Azure, GCP) oder lokal auf Proxmox/OpenStack bereitzustellen. In der SUSE-Welt nutzen wir Terraform nicht nur zum Erstellen der VMs, sondern integrieren den Prozess direkt in den SUSE Manager Bootstrap. Ein Senior Admin nutzt spezialisierte SUSE Cloud Images und automatisiert die Registrierung via user_data.


# 1. Einführung & Architektur

Provisioning im SUSE-Kontext.

Terraform baut die VM, Cloud-Init (Artikel 054) registriert das System bei SUSE, und Salt (Artikel 169) konfiguriert die Applikation.

# Der Deployment-Stack (Mermaid)

graph TD
    A[Admin: Terraform CLI] --> B[Provider: OpenStack / AWS]
    B --> C[VM Instance: SLES 15]
    C --> D[Cloud-Init: Register at SCC]
    D --> E[SUSE Manager: Bootstrap]
    E --> F[SaltStack: Configuration]
    subgraph "IaC Control"
        A
    end

# 2. SUSE Cloud Images nutzen

Optimiert für die Cloud.

SUSE stellt unter SLES Cloud Images vorkonfigurierte Abbilder bereit.

# Beispiel: Terraform Ressource für SLES

resource "openstack_compute_instance_v2" "sles_server" {
  name            = "sles-prod-01"
  image_name      = "SLES15-SP5-Cloud-Image"
  flavor_name     = "m1.medium"
  
  # Übergabe der Cloud-Init Daten zur Registrierung
  user_data = <<-EOF
    #cloud-config
    runcmd:
      - SUSEConnect -r YOUR_REG_CODE -e admin@company.com
  EOF
}

# 3. Terraform & SUSE Manager Integration

Zentrale Kontrolle ab Minute 1.

Ein professionelles Deployment fügt den neuen Server sofort zum SUSE Manager hinzu.

# Bootstrap via Terraform

Nutzen Sie den remote-exec Provisioner, um das Bootstrap-Skript auszuführen:

provisioner "remote-exec" {
  inline = [
    "curl -k https://suse-manager.local/pub/bootstrap/bootstrap.sh | bash"
  ]
}

# 4. Day-2 Operations: ALP (Adaptive Linux Platform)

Blick in die Zukunft.

SUSE ALP ist der Nachfolger von SLES und setzt massiv auf Containerisierung. Terraform wird hier genutzt, um Immutable Hosts (Transactional Systems) bereitzustellen, die ihre Workloads in WebAssembly oder Containern ausführen.


# 5. Troubleshooting & “War Stories”

Wenn der Plan die Realität trifft.

# Story 1: “Der hängende SCC-Connect”

Symptom: Terraform meldet “Success”, aber der Server hat keine Repositories. Ursache: Der SUSEConnect Befehl im user_data ist fehlgeschlagen (z.B. durch DNS-Probleme), aber Terraform wertet den Erfolg von Cloud-Init nicht standardmäßig aus. Lösung: Nutzen Sie wait_for_fulfillment oder prüfen Sie den Status via SSH im Post-Provisioning.

# Story 2: “Machine-ID Kollision”

Symptom: Terraform klont eine VM-Disk 10x. Alle 10 Server erscheinen im SUSE Manager als ein einziger Host. Ursache: Das genutzte Image war kein echtes “Cloud-Image”, sondern ein Snapshot einer laufenden VM inkl. /etc/machine-id. Lösung: Stellen Sie sicher, dass Ihr Image vor dem Snapshot mit virt-sysprep oder cloud-init clean bereinigt wurde.


# 6. Fazit & Empfehlung

  • Images: Nutzen Sie immer die offiziellen “JeOS” (Just Enough OS) oder Cloud-Images von SUSE.
  • Modularität: Bauen Sie Terraform-Module für Standard-SLES-Setups (z.B. HA-Cluster).
  • Wahl: Terraform ist ideal für die Cloud. Für rein lokale Proxmox-Setups ohne API-Zugriff ist oft AutoYaST (Artikel 125) die bessere Wahl.

# Anhang: Cheatsheet

Aufgabe Befehl / Parameter
Init Provider terraform init
Plan anzeigen terraform plan
SLES Cloud Image Suche aws ec2 describe-images --owners amazon --filters "Name=name,Values=suse-sles-15*"
State Datei terraform.tfstate
Variable für Reg-Code variable "suse_reg_code" {}
Output IP Adresse output "instance_ip" { value = ... }