0Pricing
DevOps Bootcamp · Lektion

Lokale und Remote-Exec-Provisioner

Implementieren Sie die Provisioner `local-exec` und `remote-exec`, um Befehle auf dem Rechner auszuführen, auf dem Terraform läuft, beziehungsweise auf den erstellten Ressourcen.

Lokale und Remote-Exec-Provisioner ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Terraform-Provisioner kennenlernen

Was ist, wenn Sie ein Skript oder einen Befehl nachdem Terraform eine Ressource erstellt hat ausführen müssen? Genau dafür gibt es Provisioner!

Provisioner ermöglichen es Ihnen, Aktionen auf dem lokalen Rechner oder auf einer Remote-Ressource als Teil ihres Lebenszyklus auszuführen. Sie schließen die Lücke zwischen der Erstellung der Infrastruktur und der erstmaligen Einrichtung der Software.

Betrachten Sie sie als Hooks, mit denen Sie Ihre Ressourcen direkt nach ihrer Erstellung anpassen können.

`local-exec`: Lokal ausführen

Der Provisioner local-exec führt Befehle auf dem Rechner aus, auf dem Terraform ausgeführt wird.

Dies ist für Aufgaben wie die folgenden nützlich:

  • Konfigurationsdateien lokal generieren.
  • Lokale Skripte oder Tools auslösen.
  • Bereinigungsvorgänge nach der Zerstörung einer Ressource durchführen.

Er eignet sich ideal für Aktionen, die nicht auf der Cloud-Ressource selbst stattfinden müssen.

`local-exec`: Einfaches Beispiel

Sehen wir uns an, wie local-exec nach der Erstellung einer Null-Ressource eine einfache Datei auf Ihrem lokalen Rechner erstellt.

Eine null_resource ist ein Platzhalter, der in der Cloud nichts erstellt, sich aber gut zum Auslösen von Provisionern eignet.

resource "null_resource" "local_file_creator" {
  provisioner "local-exec" {
    command = "echo 'Local file created by Terraform!' > local_output.txt"
  }

  triggers = {
    always_run = timestamp()
  }
}

Wann Sie `local-exec` verwenden sollten

local-exec eignet sich hervorragend für:

  • Benachrichtigungen nach dem Deployment: Eine E-Mail oder Slack-Nachricht senden.
  • Lokale Dateigenerierung: Inventardateien für Ansible oder andere Tools erstellen.
  • Prüfungen vor dem Deployment: Lokale Validierungsskripte ausführen.
  • CI/CD auslösen: Nach Infrastrukturänderungen eine Pipeline starten.

Denken Sie daran: Der Provisioner wird dort ausgeführt, von wo aus Sie terraform apply starten.

`remote-exec`: Auf der Ressource ausführen

Im Gegensatz zu local-exec führt der Provisioner remote-exec Befehle direkt auf der Remote-Ressource selbst aus.

Das ist für erstmalige Einrichtungsschritte auf einem neu erstellten Server besonders wichtig, etwa:

  • Softwarepakete installieren (z. B. Webserver oder Datenbank).
  • Betriebssystemeinstellungen konfigurieren.
  • Anwendungscode bereitstellen.

Für die Zielressource ist eine Netzwerkverbindung erforderlich, etwa über SSH für Linux oder WinRM für Windows.

Verbindung für `remote-exec` herstellen

Damit remote-exec funktioniert, muss Terraform eine Verbindung zu Ihrer Ressource herstellen.

Übliche Verbindungstypen sind:

  • SSH: Für Linux-Instanzen; dafür ist ein privater Schlüssel erforderlich.
  • WinRM: Für Windows-Instanzen; dafür sind Anmeldedaten erforderlich.

Üblicherweise konfigurieren Sie die Verbindungsdetails im provisioner-Block oder übernehmen sie von der Ressource.

`remote-exec` auf einer EC2-Instanz

So verwenden Sie remote-exec, um Apache auf einer neuen AWS-EC2-Instanz zu installieren.

Hinweis: Dafür muss eine EC2-Instanz bereitgestellt und über SSH erreichbar sein. Der Einfachheit halber setzen wir ein vorhandenes Schlüsselpaar und eine vorhandene Sicherheitsgruppe voraus.

resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890" # Replace with valid AMI ID
  instance_type = "t2.micro"
  key_name      = "my-ssh-key" # Replace with your SSH key name
  vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID

  provisioner "remote-exec" {
    inline = [
      "sudo yum update -y",
      "sudo yum install -y httpd",
      "sudo systemctl start httpd",
      "sudo systemctl enable httpd"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/my-ssh-key.pem")
      host        = self.public_ip
    }
  }
}

Wann Sie `remote-exec` verwenden sollten

remote-exec eignet sich ideal für:

  • Server-Bootstrapping: Webserver, Datenbanken oder Docker installieren.
  • Anwendungsbereitstellung: Anwendungscode kopieren und konfigurieren.
  • Konfigurationsmanagement: Ansible-Playbooks oder Chef-Rezepte direkt ausführen.
  • Validierung nach der Erstellung: Überprüfen, ob Dienste auf der neuen Instanz ausgeführt werden.

Damit richten Sie den Ausgangszustand eines Servers ein.

Provisioner beim Zerstören

Provisioner können auch ausgeführt werden, wenn eine Ressource zerstört wird. Das ist für Bereinigungsaufgaben nützlich.

Sie können when = destroy innerhalb eines Provisioner-Blocks angeben. Beispielsweise können Sie eine Instanz aus einem Load Balancer deregistrieren, bevor sie beendet wird.

Auch das Verhalten von on_failure kann konfiguriert werden. Damit legen Sie fest, was geschieht, wenn ein Provisioner-Befehl fehlschlägt. Standardmäßig wird ein Fehler ausgegeben.

Quiz zu Provisionern

Welchen Provisioner würden Sie verwenden, um einen Webserver (z. B. Nginx) auf einer neu erstellten virtuellen Maschine zu installieren?

Provisioner: lokal vs. remote

Wir haben Terraform-Provisioner kennengelernt – leistungsstarke Werkzeuge zum Ausführen von Befehlen während des Lebenszyklus einer Ressource.

  • local-exec führt Befehle auf dem Rechner aus, auf dem Terraform ausgeführt wird, und eignet sich beispielsweise für lokale Skripte oder Benachrichtigungen.
  • remote-exec führt Befehle direkt auf der bereitgestellten Ressource aus und eignet sich ideal für die Ersteinrichtung von Servern mit Software oder Konfigurationen.

Provisioner helfen dabei, die Lücke zwischen der Bereitstellung der Infrastruktur und der Ersteinrichtung der Anwendung zu schließen. Als Nächstes sehen wir uns fortgeschrittene Techniken zur Zustandsverwaltung an!

Häufig gestellte Fragen

Ist die Lektion „Lokale und Remote-Exec-Provisioner“ kostenlos?

Ja — der vollständige Text von „Lokale und Remote-Exec-Provisioner“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Lokale und Remote-Exec-Provisioner“?

Implementieren Sie die Provisioner `local-exec` und `remote-exec`, um Befehle auf dem Rechner auszuführen, auf dem Terraform läuft, beziehungsweise auf den erstellten Ressourcen. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Lokale und Remote-Exec-Provisioner“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Daten mit Data Sources abfragen
  2. Lokale und Remote-Exec-Provisioner
  3. Null-Ressourcen und Trigger
  4. Externe Daten und Templates verwenden
← Zurück zu DevOps Bootcamp