Provisioners för local och remote exec
Implementera provisioners med `local-exec` och `remote-exec` för att köra kommandon på datorn där Terraform körs respektive på de skapade resurserna.
Provisioners för local och remote exec är en gratis lektion i Terraform som Infrastructure as Code på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Terraform som Infrastructure as Code, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Terraform som Infrastructure as Code innehåller totalt 4 lektioner.
Möt Terraform Provisioners
Vad gör ni om ni behöver köra ett skript eller kommando efter att Terraform har skapat en resurs? Det är där provisioners kommer in!
Provisioners gör det möjligt att köra åtgärder på den lokala datorn eller på en fjärrresurs som en del av resursens livscykel. De överbryggar gapet mellan infrastrukturskapande och den första programvaruinstallationen.
Se dem som hooks som låter er anpassa resurserna direkt efter att de har skapats.
`local-exec`: Kör lokalt
Provisionern local-exec kör kommandon på den dator där Terraform körs.
Detta är användbart för uppgifter som:
- Generera konfigurationsfiler lokalt.
- Utlösa lokala skript eller verktyg.
- Utföra rensningsåtgärder efter att resurser har förstörts.
Den passar perfekt för åtgärder som inte behöver utföras på själva molnresursen.
`local-exec`: Grundläggande exempel
Vi ska se hur local-exec skapar en enkel fil på den lokala datorn efter att en null-resurs har skapats.
En null_resource är en platshållare som inte skapar något i molnet, men den är praktisk för att utlösa provisioners.
resource "null_resource" "local_file_creator" {
provisioner "local-exec" {
command = "echo 'Local file created by Terraform!' > local_output.txt"
}
triggers = {
always_run = timestamp()
}
}När ska `local-exec` användas?
local-exec passar bra för:
- Meddelanden efter deployment: Skicka ett e-postmeddelande eller ett Slack-meddelande.
- Generering av lokala filer: Skapa inventory-filer för Ansible eller andra verktyg.
- Kontroller före deployment: Kör lokala valideringsskript.
- Utlösa CI/CD: Starta en pipeline efter infrastrukturändringar.
Kom ihåg att den körs från den plats där ni kör terraform apply.
`remote-exec`: Kör på resursen
Till skillnad från local-exec kör provisionern remote-exec kommandon på själva fjärrresursen.
Detta är avgörande för den första konfigurationen av en nyskapad server, till exempel:
- Installera programpaket (t.ex. webbserver eller databas).
- Konfigurera operativsystemets inställningar.
- Distribuera applikationskod.
Det kräver nätverksanslutning (till exempel SSH för Linux eller WinRM för Windows) till målresursen.
Anslut för `remote-exec`
För att remote-exec ska fungera måste Terraform ansluta till resursen.
Vanliga anslutningstyper är:
- SSH: För Linux-instanser, där en privat nyckel krävs.
- WinRM: För Windows-instanser, där autentiseringsuppgifter krävs.
Vanligtvis konfigurerar ni anslutningsuppgifterna i provisioner-blocket eller ärver dem från resursen.
`remote-exec` på en EC2
Så här använder ni remote-exec för att installera Apache på en ny AWS EC2-instans.
Obs! Detta kräver att en EC2-instans har provisionerats och är åtkomlig via SSH. För enkelhetens skull antar vi att ett befintligt nyckelpar och en säkerhetsgrupp används.
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
}
}
}När ska `remote-exec` användas?
remote-exec passar bra för:
- Bootstrap av servrar: Installera webbservrar, databaser eller Docker.
- Applikationsdeployment: Kopiera applikationskod och konfigurera den.
- Konfigurationshantering: Kör Ansible playbooks eller Chef-recept direkt.
- Validering efter skapande: Kontrollera att tjänster körs på den nya instansen.
Det är ert förstahandsval för att konfigurera en servers ursprungliga state.
Provisioners vid destroy
Provisioners kan även köras när en resurs håller på att förstöras. Det är användbart för rensningsuppgifter.
Du kan ange when = destroy i ett provisioner-block. Till exempel för att avregistrera en instans från en lastbalanserare innan den avslutas.
Beteendet för on_failure kan också konfigureras och avgör vad som händer om ett provisioner-kommando misslyckas. Som standard genereras ett fel.
Frågesport om provisioners
Vilken provisioner skulle du använda för att installera en webbserver (till exempel Nginx) på en nyskapad virtuell maskininstans?
Provisioners: lokala kontra fjärranslutna
Vi har gått igenom Terraform-provisioners, kraftfulla verktyg för att köra kommandon under resursens livscykel.
local-execkör kommandon på den dator där Terraform körs och är användbar för lokala skript eller aviseringar.remote-execkör kommandon direkt på den provisionerade resursen och passar perfekt för att initiera servrar med programvara eller konfigurationer.
Provisioners hjälper till att överbrygga gapet mellan infrastrukturdistribution och den första konfigurationen av programmet. Nu går vi vidare till avancerade tekniker för tillståndshantering!
Lär dig Terraform som Infrastructure as Code med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Provisioners för local och remote exec” gratis?
Ja – hela texten till ”Provisioners för local och remote exec” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Terraform som Infrastructure as Code, kan Ni uppgradera till CoddyKit PRO. Kursen i Terraform som Infrastructure as Code innehåller totalt 4 lektioner.
Vad lär jag mig i ”Provisioners för local och remote exec”?
Implementera provisioners med `local-exec` och `remote-exec` för att köra kommandon på datorn där Terraform körs respektive på de skapade resurserna. Ni övar på Terraform som Infrastructure as Code med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Terraform som Infrastructure as Code?
Du behöver inga förkunskaper. Utbildningen i Terraform som Infrastructure as Code på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Provisioners för local och remote exec”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Terraform som Infrastructure as Code-lektionen?
Ja. Varje Terraform som Infrastructure as Code-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Fråga efter data med datakällor
- Provisioners för local och remote exec
- Null-resurser och triggers
- Använd externa data och mallar