Null-resurser och triggers
Upptäck `null_resource` för att köra godtyckliga kommandon som inte motsvarar en verklig molnresurs, och använd triggers för att styra när provisioners körs.
Null-resurser och triggers är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad är null_resource?
Terraform:s null_resource är en särskild resurstyp som inte direkt skapar eller hanterar något infrastruktur objekt hos din molnleverantör.
I stället fungerar den som en platshållare för att köra godtyckliga kommandon eller skript och används ofta för uppgifter som ligger utanför den vanliga resursprovisioneringens område.
Varför använda null_resource?
Du kanske undrar varför du skulle behöva en ”null”-resurs. Den är mycket användbar för:
- Köra lokala skript: Köra kommandon på den dator där Terraform körs (till exempel förbereda konfigurationsfiler).
- Åtgärder efter distribution: Utföra konfigurations- eller rensningsuppgifter efter att riktiga resurser har provisionerats.
- Interagera med externa API:er: När det inte finns någon dedikerad Terraform-provider för en viss tjänst.
- Anpassad logik: Orkestrera anpassade steg som inte är knutna till någon specifik molnresurs.
Grundläggande struktur för null_resource
Ett null_resource-block ser ut som vilken annan Terraform-resurs som helst. Utan provisioners eller triggers skapar det i sig bara ett ”null”-objekt i Terraform-tillståndet och gör inget annat.
Det kombineras vanligtvis med provisioners för att köra kommandon och med triggers för att styra när dessa kommandon körs.
Enkelt exempel med null_resource
Här är en minimal null_resource. Om du kör terraform apply för den skapas den i tillståndet, men ingen extern åtgärd utförs.
Den är bara en platshållare som kan kompletteras med åtgärder.
resource "null_resource" "my_placeholder" {
# This resource exists in state but performs no action.
# It's ready to attach provisioners or triggers.
}Provisioners med null_resource
Den verkliga styrkan hos null_resource visar sig när du kombinerar den med provisioners.
Provisioners låter dig köra skript eller kommandon på den dator där Terraform körs (local-exec) eller på själva fjärrresursen (remote-exec, även om det är mindre vanligt med null_resource).
Detta gör att null_resource kan fungera som en åtgärdskörning.
Introduktion till triggers
triggers är en map med godtyckliga nyckel-värde-par som definieras i ett null_resource-block.
Syftet är att tala om för Terraform: ”Om något värde i denna map ändras måste denna null_resource (och dess provisioners) köras igen.”
Detta är avgörande för att få null_resource att reagera på ändringar i din infrastruktur.
Så fungerar triggers
När ett värde i mappen triggers ändras upptäcker Terraform en ändring i null_resource.
Under en terraform apply kommer Terraform då att:
- Förstöra den befintliga
null_resource(om den finns). - Skapa om
null_resource. - Köra om eventuella tillhörande provisioners.
Denna mekanism säkerställer att dina anpassade åtgärder endast körs när relevanta beroenden ändras.
Exempel: triggers och local-exec
Här använder vi en null_resource för att simulera en uppdatering av en konfigurationsfil baserat på en enkel variabel. Provisioner-typen local-exec kör ett kommando, och triggers säkerställer att det körs igen om var.app_version ändras.
variable "app_version" {
description = "The version of the application."
type = string
default = "1.0.0"
}
resource "null_resource" "update_config_file" {
triggers = {
version_change = var.app_version
}
provisioner "local-exec" {
command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
}
}Bästa praxis och alternativ
Även om null_resource är kraftfull bör du använda den med eftertanke:
- Föredra providers: Om det finns en dedikerad Terraform-provider eller resurs för en uppgift bör du använda den i stället.
- Gör den idempotent: Säkerställ att skript som körs av provisioners kan köras om flera gånger utan oönskade bieffekter.
- Undvik tillståndshantering: Försök inte hantera externt tillstånd med
null_resource; det är vad backends för fjärrtillstånd är till för. - Överväg datakällan
external: För komplex extern logik som returnerar strukturerade data kan datakällanexternalvara ett renare alternativ.
Snabb kontroll: Null-resurser
Du har lärt dig om null_resource och triggers. Nu testar vi dina kunskaper.
Sammanfattning: Null och triggers
I den här lektionen har du upptäckt hur mångsidig Terraform:s null_resource är – ett kraftfullt verktyg för att köra anpassade kommandon och skript som inte motsvarar konkreta molnresurser.
Du har också lärt dig om triggers, en mekanism i null_resource som låter dig definiera beroenden och säkerställa att provisioners körs om när dessa beroenden ändras. Det möjliggör dynamisk och reaktiv anpassad automatisering inom IaC.
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Null-resurser och triggers” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Null-resurser och triggers”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Null-resurser och triggers”?
Upptäck `null_resource` för att köra godtyckliga kommandon som inte motsvarar en verklig molnresurs, och använd triggers för att styra när provisioners körs. Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 3 av 4.
Hur lång tid tar lektionen ”Null-resurser och triggers”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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