DevOps-bootcamp · Lektion

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.

Lektion 3 av 411 steg

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ällan external vara 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.

Gratis att börja

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

  1. Fråga efter data med datakällor
  2. Provisioners för local och remote exec
  3. Null-resurser och triggers
  4. Använd externa data och mallar
← Tillbaka till DevOps-bootcamp