0Pricing
Terraform Infrastructure as Code · Lezione

Introduzione ai moduli Terraform

Comprenda i vantaggi dei moduli per incapsulare e riutilizzare pattern infrastrutturali comuni, migliorando l’organizzazione e la manutenibilità del codice.

Introduzione ai moduli Terraform è una lezione Terraform Infrastructure as Code gratuita su CoddyKit. Questa è la lezione 1 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 Terraform Infrastructure as Code, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.

Cosa sono i moduli Terraform?

Un modulo Terraform è un pacchetto autonomo di configurazioni Terraform. Può considerarlo simile a una funzione o a una classe nei linguaggi di programmazione. Consente di raggruppare risorse correlate e gestirle come un'unica unità.

I moduli aiutano a organizzare il codice dell'infrastruttura e a renderlo più gestibile, soprattutto nei progetti di grandi dimensioni.

Perché usare i moduli Terraform?

I moduli offrono diversi vantaggi fondamentali per l'infrastruttura come codice:

  • Riutilizzabilità: definire una parte dell'infrastruttura una sola volta e usarla più volte in progetti o ambienti diversi.
  • Organizzazione: suddividere configurazioni complesse in componenti più piccoli, gestibili e logici.
  • Coerenza: assicurarsi che le risorse vengano sempre sottoposte a provisioning in modo standardizzato, riducendo la deriva della configurazione e gli errori.
  • Collaborazione: i team possono sviluppare e condividere moduli, accelerando lo sviluppo e mantenendo gli standard.

Struttura di un modulo

Un modulo Terraform è essenzialmente una directory contenente uno o più file .tf. Sebbene la struttura sia flessibile, una configurazione comune include:

  • main.tf: definisce le risorse principali create dal modulo.
  • variables.tf: dichiara le variabili di input che personalizzano il comportamento del modulo.
  • outputs.tf: definisce i valori di output esposti dal modulo ai chiamanti.
  • versions.tf: specifica i vincoli sulle versioni di Terraform e dei provider per il modulo.

Questa struttura organizzata aiuta a mantenere il codice ordinato e comprensibile.

Il primo codice di un modulo

Definiamo un modulo molto semplice che crea un bucket AWS S3. In genere questo codice risiederebbe in una directory dedicata, ad esempio modules/my_s3_bucket/main.tf.

Questo file completo potrebbe essere eseguito come modulo root per osservarne il funzionamento, ma il suo scopo principale qui è mostrare la struttura interna di un modulo.

provider "aws" {
  region = "us-east-1" # Example region
}

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

resource "aws_s3_bucket" "example_bucket" {
  bucket = var.bucket_name
  acl    = var.acl_setting

  tags = {
    Environment = "Dev" # Example tag
  }
}

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Input del modulo: variabili

Le variabili di input consentono di personalizzare il comportamento del modulo senza modificarne il codice principale. Sono definite in un file variables.tf all'interno della directory del modulo.

Quando richiama un modulo, passa i valori a queste variabili, rendendo il modulo altamente riutilizzabile in scenari e ambienti diversi. Può considerarle come gli argomenti di una funzione.

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

Output del modulo: esposizione dei dati

I valori di output servono a esporre i dati da un modulo alla configurazione che lo richiama. In questo modo è possibile accedere alle informazioni importanti sulle risorse create dal modulo.

Gli output sono definiti in un file outputs.tf all'interno della directory del modulo e possono essere referenziati da altre parti della configurazione Terraform o persino da altri moduli.

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Richiamare il modulo personalizzato

Ora che abbiamo definito il modulo my_s3_bucket, richiamiamolo da una configurazione root. L'attributo source specifica dove Terraform può trovare il modulo.

Per i moduli locali, si tratta di un percorso relativo alla directory del modulo. Passiamo i valori alle variabili di input del modulo e possiamo accedere agli output esposti.

provider "aws" {
  region = "us-east-1"
}

module "my_website_bucket" {
  source      = "./modules/my_s3_bucket" # Path to your local module
  bucket_name = "my-unique-website-bucket-12345"
  acl_setting = "public-read"
}

output "website_bucket_arn" {
  description = "ARN of the website S3 bucket."
  value       = module.my_website_bucket.bucket_arn
}

output "website_bucket_id" {
  description = "ID of the website S3 bucket."
  value       = module.my_website_bucket.bucket_id
}

Diverse origini dei moduli

I moduli non sono necessariamente locali! Terraform può recuperare i moduli da diverse origini, offrendo maggiore flessibilità:

  • Percorsi locali: ./modules/my_module (come nell'esempio)
  • Terraform Registry: hashicorp/vpc/aws (moduli disponibili pubblicamente)
  • Repository Git: git::https://example.com/repo.git
  • Bucket S3: s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip

Terraform Registry è un ottimo punto di partenza per trovare moduli predefiniti e verificati dalla community, destinati ai più comuni modelli di infrastruttura.

L'impatto pratico dei moduli

Immagini di dover gestire centinaia di risorse in più ambienti (sviluppo, staging e produzione). Senza i moduli, avrebbe file di configurazione enormi e ripetitivi.

I moduli consentono di definire una sola volta un modello di "server web" o "database". In seguito, è sufficiente richiamare quel modulo per ogni istanza, passando variabili diverse per le impostazioni specifiche dell'ambiente. Questo riduce drasticamente gli errori, semplifica gli aggiornamenti e rende l'infrastruttura realmente scalabile.

Verifica rapida

Ha imparato la struttura e i vantaggi dei moduli Terraform. Verifichiamo se sa individuare un vantaggio fondamentale.

Riepilogo e prossimi passi

In questa lezione abbiamo introdotto i moduli Terraform come strumenti potenti per organizzare e riutilizzare il codice dell'infrastruttura. Ha imparato che:

  • i moduli incapsulano le risorse in unità riutilizzabili;
  • migliorano l'organizzazione, la coerenza e la riutilizzabilità del codice;
  • i moduli usano variables.tf per gli input e outputs.tf per i dati esposti;
  • è possibile richiamare i moduli da percorsi locali, registry o repository Git.

Nel prossimo modulo approfondiremo la creazione di moduli riutilizzabili personalizzati, esplorando modelli più avanzati e best practice.

Domande Frequenti

La lezione «Introduzione ai moduli Terraform» è gratuita?

Sì — il testo completo di «Introduzione ai moduli Terraform» è 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 Terraform Infrastructure as Code, passa a CoddyKit PRO. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.

Cosa imparerò in «Introduzione ai moduli Terraform»?

Comprenda i vantaggi dei moduli per incapsulare e riutilizzare pattern infrastrutturali comuni, migliorando l’organizzazione e la manutenibilità del codice. Eserciti Terraform Infrastructure as Code 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 Terraform Infrastructure as Code?

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

Quanto tempo richiede la lezione «Introduzione ai moduli Terraform»?

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 Terraform Infrastructure as Code?

Sì. Ogni lezione Terraform Infrastructure as Code 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. Introduzione ai moduli Terraform
  2. Creazione di moduli riutilizzabili
  3. Utilizzo degli workspace per gli ambienti
  4. Pubblicare moduli in un registry
← Torna a Terraform Infrastructure as Code