arrow_back

Terraform Fundamentals

Partecipa Accedi

Terraform Fundamentals

35 minuti 1 credito

GSP156

Laboratori autogestiti Google Cloud

Panoramica

Terraform consente di creare, modificare e migliorare l'infrastruttura in modo sicuro e prevedibile. È uno strumento open source che codifica le API in file di configurazione dichiarativi che possono essere condivisi tra colleghi, trattati come codice, modificati, rivisti e sottoposti al controllo del versioni.

Obiettivi

In questo lab imparerai a:

  • Svolgere operazioni di base con Terraform in Google Cloud.

  • Installare Terraform da programmi binari di installazione.

  • Creare un'infrastruttura con un'istanza VM mediante Terraform.

Configurazione e requisiti

Configurazione di Qwiklabs

Prima di fare clic sul pulsante Avvia lab

Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.

Con questo lab pratico Qwiklabs avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.

Per completare il lab, avrai bisogno di:

  • Accesso a un browser Internet standard (Chrome è il browser consigliato).
  • Nota: utilizza una finestra di navigazione in incognito o privata per eseguire questo lab. Ciò previene qualsiasi conflitto tra il tuo account personale e l'account Studente, che potrebbe causare costi aggiuntivi sostenuti per il tuo account personale.

  • Tempo a disposizione per completare il lab.
  • Nota: se disponi già del tuo account o progetto Google Cloud personale, non utilizzarlo per questo lab per evitare costi aggiuntivi sul tuo account.

Come avviare il lab e accedere alla console Google Cloud

  1. Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:

    • Pulsante Apri console Google
    • Tempo rimanente
    • Credenziali temporanee da utilizzare per il lab
    • Altre informazioni per seguire questo lab, se necessario
  2. Fai clic su Apri console Google. Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.

    Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.

    Note: se visualizzi la finestra di dialogo Scegli un account, fai clic su Utilizza un altro account.
  3. Se necessario, copia il Nome utente dal riquadro Dettagli lab e incollalo nella finestra di dialogo di accesso. Fai clic su Avanti.

  4. Copia la Password dal riquadro Dettagli lab e incollala nella finestra di dialogo di benvenuto. Fai clic su Avanti.

    Importante: devi utilizzare le credenziali presenti nel riquadro di sinistra. Non utilizzare le tue credenziali Google Cloud Skills Boost. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
  5. Fai clic nelle pagine successive:

    • Accetta i termini e le condizioni.
    • Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
    • Non registrarti per le prove gratuite.

Dopo qualche istante, la console Google Cloud si apre in questa scheda.

Nota: puoi visualizzare il menu con un elenco di prodotti e servizi Google Cloud facendo clic sul menu di navigazione in alto a sinistra. Icona menu di navigazione

Attiva Cloud Shell

Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.

  1. Fai clic su Attiva Cloud Shell Attiva l'icona di Cloud Shell nella parte superiore della console di Google Cloud.

  2. Fai clic su Continua.

  3. Occorrono alcuni istanti per eseguire il provisioning e connettersi all'ambiente. Quando sei connesso, sei già autenticato e il progetto è impostato sul tuo PROJECT_ID. L'output contiene una riga che dichiara il PROJECT_ID per questa sessione:

    Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

    gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.

  4. (Opzionale) Puoi visualizzare il nome dell'account attivo con questo comando:

  5. gcloud auth list

    Output

    ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  6. (Opzionale) Puoi elencare l'ID progetto con questo comando:

gcloud config list project

Output

[core] project =

output di esempio

[core] project = qwiklabs-gcp-44776a13dea667a6

Che cos'è Terraform?

Terraform è uno strumento che consente di creare un'infrastruttura, modificarla e sottoporla al controllo delle versioni in modo sicuro ed efficiente. Terraform è in grado di gestire i più diffusi fornitori di servizi esistenti, nonché soluzioni personalizzate sviluppate internamente.

I file di configurazione descrivono a Terraform i componenti necessari per eseguire una singola applicazione o un intero data center. Terraform genera un piano di esecuzione che descrive le operazioni che effettuerà per raggiungere lo stato desiderato, quindi lo esegue per creare l'infrastruttura descritta. Al variare della configurazione, Terraform è in grado di stabilire che cosa è cambiato e di creare piani di esecuzione incrementali che possono essere applicati.

L'infrastruttura che Terraform può gestire include sia componenti di basso livello, come istanze di calcolo, spazio di archiviazione e networking, sia componenti di alto livello, come voci DNS e funzionalità SaaS.

Funzionalità principali

Infrastructure as Code (IaC)

L'infrastruttura viene descritta con una sintassi di configurazione di alto livello. In questo modo, un progetto di data center può essere sottoposto al controllo delle versioni e trattato come qualsiasi altro codice. Inoltre, l'infrastruttura può essere condivisa e riutilizzata.

Piani di esecuzione

Terraform prevede una fase di pianificazione in cui genera un piano di esecuzione. Il piano di esecuzione mostra che cosa farà Terraform quando eseguirai il comando apply. Questo consente di evitare sorprese quando Terraform manipolerà l'infrastruttura.

Grafico delle risorse

Terraform crea un grafico di tutte le risorse e mette in parallelo la creazione e la modifica delle risorse non dipendenti. Di conseguenza, Terraform crea l'infrastruttura nel modo più efficiente possibile e gli operatori ottengono visibilità sulle dipendenze nella propria infrastruttura.

Automazione delle modifiche

È possibile applicare complessi set di modifiche all'infrastruttura riducendo al minimo l'interazione umana. Grazie al piano di esecuzione e al grafico delle risorse citati prima, saprai esattamente quali modifiche apporterà Terraform e in quale ordine, evitando così molti possibili errori umani.

Verifica l'installazione di Terraform

Terraform è preinstallato in Cloud Shell.

  1. Apri una nuova scheda di Cloud Shell e verifica che Terraform sia disponibile:

terraform

L'output di supporto risultante dovrebbe essere simile al seguente:

Usage: terraform [--version] [--help] <command> [args]
The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
Common commands:
    apply              Builds or changes infrastructure
    console            Interactive console for Terraform interpolations
    destroy            Destroy Terraform-managed infrastructure
    env                Workspace management
    fmt                Rewrites config files to canonical format
    get                Download and install modules for the configuration
    graph              Create a visual graph of Terraform resources
    import             Import existing infrastructure into Terraform
    init               Initialize a Terraform working directory
    output             Read an output from a state file
    plan               Generate and show an execution plan
    providers          Prints a tree of the providers used in the configuration
    push               Upload this Terraform module to Atlas to run
    refresh            Update local state file against real resources
    show               Inspect Terraform state or plan
    taint              Manually mark a resource for recreation
    untaint            Manually unmark a resource as tainted
    validate           Validates the Terraform files
    version            Prints the Terraform version
    workspace          Workspace management
All other commands:
    debug              Debug output management (experimental)
    force-unlock       Manually unlock the terraform state
    state              Advanced state management

Crea l'infrastruttura

Se Terraform è installato, puoi iniziare immediatamente a creare un'infrastruttura.

Configurazione

Il set di file utilizzato per descrivere l'infrastruttura in Terraform è noto semplicemente come Terraform configuration. In questa sezione scriverai la tua prima configurazione per avviare una singola istanza VM. Il formato dei file di configurazione è documentato qui. Per creare i file di configurazione è consigliabile utilizzare JSON.

  1. In Cloud Shell, crea un file di configurazione vuoto denominato instance.tf con il comando seguente:

touch instance.tf
  1. Fai clic su Apri editor nella barra degli strumenti di Cloud Shell. Per passare da Cloud Shell all'editor di codice o viceversa, fai clic su Apri editor o Apri terminale, a seconda del caso, oppure fai clic su Apri in una nuova finestra per lasciare aperto l'editor in una scheda separata.

  2. Fai clic sul file instance.tf e aggiungi il contenuto seguente al suo interno, sostituendo <PROJECT_ID> con l'ID progetto di Google Cloud:

resource "google_compute_instance" "terraform" {
  project      = "<PROJECT_ID>"
  name         = "terraform"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  network_interface {
    network = "default"
    access_config {
    }
  }
}

Questa è una configurazione completa che Terraform è pronto ad applicare. La struttura generale deve essere intuitiva e immediata.

Il blocco "resource" nel file instance.tf definisce una risorsa esistente nell'infrastruttura. Una risorsa può essere un componente fisico, ad esempio un'istanza VM.

L'inizio vero e proprio del blocco della risorsa è preceduto da due stringhe che indicano il tipo di risorsa e il nome della risorsa. Per questo lab, il tipo di risorsa è google_compute_instance e il nome è terraform. Il prefisso del tipo si riferisce al fornitore: google_compute_instance indica automaticamente a Terraform che è gestito dal fornitore Google.

All'interno del blocco della risorsa è riportata la configurazione di cui la risorsa ha bisogno.

  1. In Cloud Shell, verifica che sia stato aggiunto il nuovo file e che nella directory non ci siano altri file *.tf, perché Terraform li carica tutti:

ls

Inizializzazione

Il primo comando da eseguire per una nuova configurazione, o dopo avere eseguito il check-out di una configurazione esistente dal controllo della versione, è terraform init. Questo comando inizializza varie impostazioni locali e i dati che verranno utilizzati dai comandi successivi.

Terraform utilizza un'architettura basata su plug-in per supportare i numerosi fornitori di infrastrutture e servizi disponibili. Ogni "fornitore" corrisponde a uno specifico programma binario incapsulato che viene distribuito separatamente da Terraform. Il comando terraform init scaricherà e installerà automaticamente tutti i programmi binari dei fornitori che questi potranno utilizzare all'interno della configurazione. In questo caso, l'unico fornitore è Google.

  1. Scarica e installa il programma binario del fornitore:

terraform init

Il plug-in del fornitore Google viene scaricato e installato in una sottodirectory della directory di lavoro corrente, insieme a diversi altri file di gestione. Verrà visualizzato un messaggio che indica che è in corso l'inizializzazione dei plug-in del fornitore. Sapendo che l'esecuzione si basa su un progetto Google, Terraform scarica le risorse Google.

Installing hashicorp/google v3.77.0...

L'output riporta la versione del plug-in che viene installata e suggerisce di specificare questa versione nei futuri file di configurazione, per garantire che terraform init installi una versione compatibile.

  1. Crea un piano di esecuzione:

terraform plan

Terraform esegue un aggiornamento, a meno che non venga disabilitato esplicitamente, quindi stabilisce quali azioni sono necessarie per raggiungere lo stato specificato nei file di configurazione. Questo comando consente di verificare facilmente se il piano di esecuzione per un set di modifiche è in linea con le aspettative, senza modificare risorse effettive o lo stato. Ad esempio, può essere utile eseguire questo comando prima di eseguire il commit di una modifica nel controllo della versione, per assicurarsi che si comporti nel modo previsto.

Applica le modifiche

  1. Nella stessa directory in cui si trova il file instance.tf che hai creato, esegui questo comando:

terraform apply

Questo output mostra il piano di esecuzione, che descrive le azioni che Terraform eseguirà per modificare l'infrastruttura reale in base alla configurazione. Il formato dell'output è analogo al formato diff generato da strumenti come Git.

Il segno + accanto a google_compute_instance.terraform indica che Terraform creerà questa risorsa. Di seguito sono indicati gli attributi che verranno impostati. Quando il valore visualizzato è <computed>, significa che il valore sarà noto solo dopo la creazione della risorsa.

Output di esempio:

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
Terraform will perform the following actions:
  # google_compute_instance.default will be created
  + resource "google_compute_instance" "default" {
      + can_ip_forward       = false
      + cpu_platform         = (known after apply)
      + deletion_protection  = false
      + guest_accelerator    = (known after apply)
      + id                   = (known after apply)
      + instance_id          = (known after apply)
      + label_fingerprint    = (known after apply)
      + machine_type         = "n1-standard-1"
      + metadata_fingerprint = (known after apply)
      + name                 = "terraform"
      + project              = "qwiklabs-gcp-42390cc9da8a4c4b"
      + self_link            = (known after apply)
      + tags_fingerprint     = (known after apply)
      + zone                 = "us-central1-a"
      + boot_disk {
          + auto_delete                = true
          + device_name                = (known after apply)
          + disk_encryption_key_sha256 = (known after apply)
          + kms_key_self_link          = (known after apply)
          + source                     = (known after apply)
          + initialize_params {
              + image  = "debian-cloud/debian-9"
              + labels = (known after apply)
              + size   = (known after apply)
              + type   = (known after apply)
            }
        }
      + network_interface {
          + address            = (known after apply)
          + name               = (known after apply)
          + network            = "default"
          + network_ip         = (known after apply)
          + subnetwork         = (known after apply)
          + subnetwork_project = (known after apply)
          + access_config {
              + assigned_nat_ip = (known after apply)
              + nat_ip          = (known after apply)
              + network_tier    = (known after apply)
            }
        }
      + scheduling {
          + automatic_restart   = (known after apply)
          + on_host_maintenance = (known after apply)
          + preemptible         = (known after apply)
          + node_affinities {
              + key      = (known after apply)
              + operator = (known after apply)
              + values   = (known after apply)
            }
        }
    }
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.
  Enter a value:

Se il piano viene creato correttamente, ora Terraform interrompe le operazioni e attende l'approvazione prima di procedere. In un ambiente di produzione, se il piano di esecuzione presenta elementi che appaiono non corretti o pericolosi, è preferibile annullare l'operazione a questo punto. Non è stata apportata alcuna modifica all'infrastruttura.

  1. In questo caso il piano risulta accettabile, quindi digita yes alla richiesta di conferma per procedere. L'esecuzione del piano richiede qualche minuto perché Terraform attende che l'istanza VM diventi disponibile

Alla fine di questa operazione, Terraform ha terminato.

Verifica l'attività completata

Fai clic su Controlla i miei progressi per verificare l'attività eseguita. Se hai completato correttamente l'attività, riceverai un punteggio di valutazione.

Crea un'istanza VM nella zona us-central1-a con Terraform.
  1. In Google Cloud Console, nel menu di navigazione, fai clic su Compute Engine > Istanze VM per visualizzare l'istanza VM creata.

terraform-vm.png

Terraform ha scritto alcuni dati nel file terraform.tfstate. Questo file di stato è estremamente importante: tiene traccia degli ID delle risorse create per consentire a Terraform di sapere che cosa sta gestendo.

  1. In Cloud Shell, controlla lo stato corrente:

terraform show

Output di esempio:

# google_compute_instance.default:
resource "google_compute_instance" "default" {
    can_ip_forward       = false
    cpu_platform         = "Intel Haswell"
    deletion_protection  = false
    guest_accelerator    = []
    id                   = "terraform"
    instance_id          = "3408292216444307052"
    label_fingerprint    = "42WmSpB8rSM="
    machine_type         = "n1-standard-1"
    metadata_fingerprint = "s6I5s2tjfKw="
    name                 = "terraform"
    project              = "qwiklabs-gcp-42390cc9da8a4c4b"
    self_link            = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/us-central1-a/instances/terraform"
    tags_fingerprint     = "42WmSpB8rSM="
    zone                 = "us-central1-a"
    boot_disk {
        auto_delete = true
        device_name = "persistent-disk-0"
        source      = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/us-central1-a/disks/terraform"
....

Come puoi notare, con la creazione della risorsa hai raccolto anche molte informazioni che la riguardano. Questi valori possono essere utilizzati come riferimento per configurare ulteriori risorse o output.

Complimenti! Hai creato la tua prima infrastruttura con Terraform. Hai visto la sintassi della configurazione e un esempio di piano di esecuzione di base e comprendi il file di stato.

Verifica le tue conoscenze

Le seguenti domande a scelta multipla servono a consolidare le tue conoscenze relative ai concetti trattati in questo lab. Rispondi alle domande al meglio delle tue capacità.

Complimenti

Terraform_badge_125.png

Completa la Quest

Questo self-paced lab fa parte delle Quest Managing Cloud Infrastructure with Terraform e Automating Infrastructure on Google Cloud with Terraform. Una Quest è una serie di lab collegati tra loro che formano un percorso di apprendimento. Il completamento di questa Quest ti permette di ottenere il badge qui sopra come riconoscimento dell'obiettivo raggiunto. Puoi rendere pubblici i tuoi badge inserendone i link nel tuo CV online o sui social media. Iscriviti alla Quest di badge delle competenze Managing Cloud Infrastructure with Terraform o Automating Infrastructure on Google Cloud with Terraform e ottieni subito un riconoscimento per aver completato questo lab. Scopri le altre Quest di Qwiklabs disponibili.

Segui il prossimo lab

Continua la Quest con Using a NAT Gateway with Kubernetes Engine o Infrastructure as Code with Terraform oppure dai un'occhiata a questi suggerimenti:

Passaggi successivi/Scopri di più

Formazione e certificazione Google Cloud

… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.

Ultimo aggiornamento del manuale: 29 luglio 2021

Ultimo test del lab: 29 luglio 2021

Copyright 2020 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.