0Pricing
DevOps Bootcamp · Lezione

Risorse null e trigger

Scopra `null_resource` per eseguire comandi arbitrari che non corrispondono a una vera risorsa cloud e utilizzi i trigger per controllare quando vengono eseguiti i provisioner.

Risorse null e trigger è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Che cos'è null_resource?

La null_resource di Terraform è un tipo speciale di risorsa che non crea né gestisce direttamente alcun oggetto dell'infrastruttura nel provider cloud.

Funziona invece da segnaposto per eseguire comandi o script arbitrari, spesso per attività che esulano dall'ambito del provisioning delle risorse tradizionali.

Perché usare null_resource?

Potrebbe chiedersi perché sia necessaria una risorsa «null». È estremamente utile per:

  • Eseguire script locali: eseguire comandi sulla macchina in cui viene eseguito Terraform (ad esempio, preparare file di configurazione).
  • Azioni successive alla distribuzione: eseguire attività di configurazione o pulizia dopo il provisioning delle risorse reali.
  • Interagire con API esterne: quando non esiste un provider Terraform dedicato per un servizio specifico.
  • Logica personalizzata: orchestrare passaggi personalizzati che non sono associati a una risorsa cloud specifica.

Struttura di base di null_resource

Un blocco null_resource ha lo stesso aspetto di qualsiasi altra risorsa Terraform. Da solo, senza provisioner o trigger, crea semplicemente un oggetto «null» nello stato di Terraform e non esegue altre operazioni.

In genere viene usato insieme ai provisioner per eseguire comandi e ai trigger per controllare quando tali comandi devono essere eseguiti.

Esempio semplice di null_resource

Ecco una null_resource minima. Se si esegue terraform apply, la risorsa verrà creata nello stato, ma non verrà eseguita alcuna azione esterna.

È solo un segnaposto, pronto per essere arricchito con delle azioni.

resource "null_resource" "my_placeholder" {
  # This resource exists in state but performs no action.
  # It's ready to attach provisioners or triggers.
}

Provisioner con null_resource

La vera potenza di null_resource emerge quando la si combina con i provisioner.

I provisioner consentono di eseguire script o comandi sulla macchina che esegue Terraform (local-exec) oppure sulla risorsa remota stessa (remote-exec, sebbene sia meno comune con null_resource).

In questo modo null_resource può diventare un esecutore di azioni.

Introduzione ai trigger

I trigger sono una mappa di coppie chiave-valore arbitrarie definite all'interno di un blocco null_resource.

Il loro scopo è comunicare a Terraform: «Se cambia un valore qualsiasi di questa mappa, è necessario eseguire nuovamente questa null_resource e i relativi provisioner».

Questo è fondamentale per fare in modo che null_resource reagisca alle modifiche dell'infrastruttura.

Come funzionano i trigger

Quando cambia un valore nella mappa triggers, Terraform rileva una modifica a null_resource.

Durante un terraform apply, Terraform eseguirà quindi queste operazioni:

  • Distruggere la null_resource esistente, se presente.
  • Ricreare la null_resource.
  • Eseguire nuovamente tutti i provisioner associati.

Questo meccanismo garantisce che le azioni personalizzate vengano eseguite solo quando cambiano le dipendenze rilevanti.

Esempio: trigger e local-exec

In questo caso utilizziamo una null_resource per simulare l'aggiornamento di un file di configurazione in base a una semplice variabile. Il provisioner local-exec esegue un comando e i triggers ne garantiscono la nuova esecuzione se cambia var.app_version.

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

Buone pratiche e alternative

Sebbene sia potente, utilizzi null_resource con criterio:

  • Preferisca i provider: se per un'attività esiste un provider o una risorsa Terraform dedicata, utilizzi quella.
  • Mantenga l'idempotenza: si assicuri che gli script eseguiti dai provisioner possano essere rieseguiti più volte senza effetti collaterali.
  • Eviti di gestire lo stato: non cerchi di gestire lo stato esterno con null_resource; per questo esistono i backend dello stato remoto.
  • Consideri la sorgente dati external: per una logica esterna complessa che restituisce dati strutturati, la sorgente dati external potrebbe essere un'alternativa più pulita.

Verifica rapida: risorse Null

Ha imparato a conoscere null_resource e triggers. Verifichiamo la sua comprensione.

Riepilogo: Null e trigger

In questa lezione ha scoperto la versatilità di null_resource di Terraform, uno strumento potente per eseguire comandi e script personalizzati che non corrispondono a risorse cloud concrete.

Ha inoltre imparato a conoscere i triggers, un meccanismo di null_resource che consente di definire dipendenze e garantire la riesecuzione dei provisioner ogni volta che tali dipendenze cambiano. Questo consente di realizzare un'automazione personalizzata dinamica e reattiva nell'ambito dell'IaC.

Domande Frequenti

La lezione «Risorse null e trigger» è gratuita?

Sì — il testo completo di «Risorse null e trigger» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Risorse null e trigger»?

Scopra `null_resource` per eseguire comandi arbitrari che non corrispondono a una vera risorsa cloud e utilizzi i trigger per controllare quando vengono eseguiti i provisioner. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Risorse null e trigger»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Interrogazione dei dati con le data source
  2. Provisioner `local-exec` e `remote-exec`
  3. Risorse null e trigger
  4. Usare dati esterni e template
← Torna a DevOps Bootcamp