DevOps-bootcamp · Les

Local- en remote-exec-provisioners

Implementeer `local-exec`- en `remote-exec`-provisioners om respectievelijk opdrachten uit te voeren op de machine waarop Terraform draait of op de gemaakte resources.

Les 2 van 411 stappen

Local- en remote-exec-provisioners is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Kennismaken met Terraform-provisioners

Wat als je een script of opdracht moet uitvoeren nadat Terraform een resource heeft aangemaakt? Daar komen provisioners van pas!

Met provisioners kun je acties uitvoeren op de lokale machine of op een externe resource als onderdeel van de levenscyclus ervan. Ze overbruggen de kloof tussen het aanmaken van infrastructuur en de eerste softwareconfiguratie.

Beschouw ze als hooks waarmee je je resources direct na het aanmaken kunt aanpassen.

`local-exec`: lokaal uitvoeren

De local-exec-provisioner voert opdrachten uit op de machine waarop Terraform wordt uitgevoerd.

Dit is nuttig voor taken zoals:

  • Lokaal configuratiebestanden genereren.
  • Lokale scripts of tools starten.
  • Opschoonbewerkingen uitvoeren nadat een resource is verwijderd.

Dit is ideaal voor acties die niet op de cloudresource zelf hoeven plaats te vinden.

`local-exec`: basisvoorbeeld

We bekijken hoe local-exec een eenvoudig bestand op je lokale machine maakt nadat een null-resource is aangemaakt.

Een null_resource is een tijdelijke aanduiding die niets in de cloud aanmaakt, maar handig is om provisioners te activeren.

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

  triggers = {
    always_run = timestamp()
  }
}

Wanneer gebruik je `local-exec`?

local-exec is geschikt voor:

  • Meldingen na implementatie: een e-mail- of Slack-bericht versturen.
  • Lokaal bestanden genereren: inventarisbestanden voor Ansible of andere tools maken.
  • Controles vóór implementatie: lokale validatiescripts uitvoeren.
  • CI/CD activeren: een pijplijn starten nadat de infrastructuur is gewijzigd.

Onthoud dat deze provisioner wordt uitgevoerd vanuit de locatie waar je terraform apply uitvoert.

`remote-exec`: op de resource uitvoeren

In tegenstelling tot local-exec voert de remote-exec-provisioner opdrachten uit op de externe resource zelf.

Dit is essentieel voor eerste configuratietaken op een nieuw aangemaakte server, zoals:

  • Softwarepakketten installeren (bijvoorbeeld een webserver of database).
  • Instellingen van het besturingssysteem configureren.
  • Applicatiecode implementeren.

Hiervoor is netwerkverbinding met de doelresource nodig, bijvoorbeeld via SSH voor Linux of WinRM voor Windows.

Verbinding maken voor `remote-exec`

Om remote-exec te laten werken, moet Terraform verbinding kunnen maken met je resource.

Veelgebruikte verbindingstypen zijn:

  • SSH: voor Linux-instanties, waarbij een privésleutel nodig is.
  • WinRM: voor Windows-instanties, waarbij aanmeldgegevens nodig zijn.

Je configureert de verbindingsgegevens meestal in het blok provisioner of laat ze van de resource overnemen.

`remote-exec` op een EC2-instantie

Zo gebruik je remote-exec om Apache op een nieuwe AWS EC2-instantie te installeren.

Let op: hiervoor moet een EC2-instantie zijn ingericht en via SSH toegankelijk zijn. Voor de eenvoud gaan we uit van een bestaande sleutelcombinatie en beveiligingsgroep.

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

Wanneer gebruik je `remote-exec`?

remote-exec is ideaal voor:

  • Servers initialiseren: webservers, databases of Docker installeren.
  • Applicaties implementeren: applicatiecode kopiëren en configureren.
  • Configuratiebeheer: Ansible-playbooks of Chef-recepten rechtstreeks uitvoeren.
  • Validatie na het aanmaken: controleren of services op de nieuwe instantie actief zijn.

Gebruik dit als eerste keuze voor het instellen van de beginstatus van een server.

Provisioners bij vernietiging

Provisioners kunnen ook worden uitgevoerd wanneer een resource wordt vernietigd. Dit is handig voor opruimtaken.

Je kunt when = destroy opgeven binnen een provisioner-blok. Bijvoorbeeld om een instantie uit een load balancer te deregistreren voordat deze wordt beëindigd.

Je kunt ook het gedrag van on_failure configureren. Dit bepaalt wat er gebeurt als een provisioner-opdracht mislukt. Standaard wordt er een fout gegenereerd.

Quiz over provisioners

Welke provisioner zou je gebruiken om een webserver (zoals Nginx) te installeren op een nieuw gemaakte virtuele machine?

Provisioners: lokaal versus extern

We hebben de provisioners van Terraform bekeken: krachtige hulpmiddelen om opdrachten uit te voeren tijdens de levenscyclus van een resource.

  • local-exec voert opdrachten uit op de machine waarop Terraform wordt uitgevoerd. Dit is handig voor lokale scripts of meldingen.
  • remote-exec voert opdrachten rechtstreeks uit op de ingerichte resource. Dit is ideaal om servers te initialiseren met software of configuraties.

Provisioners helpen de kloof te overbruggen tussen het implementeren van infrastructuur en het instellen van de eerste toepassing. Vervolgens gaan we dieper in op geavanceerde technieken voor statusbeheer!

Gratis beginnen

Leer DevOps-bootcamp met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
142
Lessen
568

Veelgestelde vragen

Is de les “Local- en remote-exec-provisioners” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Local- en remote-exec-provisioners”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat leer ik in “Local- en remote-exec-provisioners”?

Implementeer `local-exec`- en `remote-exec`-provisioners om respectievelijk opdrachten uit te voeren op de machine waarop Terraform draait of op de gemaakte resources. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?

Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Local- en remote-exec-provisioners”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?

Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Gegevens opvragen met data sources
  2. Local- en remote-exec-provisioners
  3. Null-resources en triggers
  4. Externe data en templates gebruiken
← Terug naar DevOps-bootcamp