arrow_back

Concetti fondamentali di Terraform

Partecipa Accedi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Concetti fondamentali di Terraform

Lab 35 minuti universal_currency_alt 1 credito show_chart Introduttivi
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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

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 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 del browser in incognito o privata per eseguire questo lab. Ciò evita eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
  • È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: se hai già un account o un progetto Google Cloud personale, non utilizzarlo per questo lab per evitare addebiti aggiuntivi al 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 Icona Attiva Cloud Shell nella parte superiore della console Google Cloud.

Quando la connessione è attiva, l'autenticazione è già avvenuta 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.

  1. (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
  1. Fai clic su Autorizza.

  2. L'output dovrebbe avere ora il seguente aspetto:

Output:

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

Output:

[core] project = <project_ID>

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: per la documentazione completa di gcloud, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.

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 provider 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.

Attività 1: verifica l'installazione di Terraform

Terraform è preinstallato in Cloud Shell.

  • 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] [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

Attività 2: 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 si trova nella Documentazione del linguaggio Terraform. 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_0.project_id}}}" name = "terraform" machine_type = "e2-medium" zone = "{{{project_0.default_zone}}}" 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 provider: google_compute_instance indica automaticamente a Terraform che è gestito dal provider 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 provider di infrastrutture e servizi disponibili. Ogni "provider" 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 provider che questi potranno utilizzare all'interno della configurazione. In questo caso, l'unico provider è Google.

  1. Scarica e installa il programma binario del provider:
terraform init

Il plug-in del provider 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 provider. Sapendo che l'esecuzione si basa su un progetto Google, Terraform scarica le risorse Google.

Installing hashicorp/google v4.77.0... Nota: il tuo numero di versione potrebbe essere superiore.

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.

Nota: è possibile utilizzare l'argomento facoltativo -out per salvare il piano generato in un file da eseguire successivamente con terraform apply.

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 = "e2-medium" + metadata_fingerprint = (known after apply) + name = "terraform" + project = "qwiklabs-gcp-42390cc9da8a4c4b" + self_link = (known after apply) + tags_fingerprint = (known after apply) + zone = "us-west1-c" + 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-11" + 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 è stato 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 con Terraform.
  1. Nella console Google Cloud, nel menu di navigazione, fai clic su Compute Engine > Istanze VM. La pagina Istanze VM si apre e vedrai l'istanza VM che hai creato nell'elenco delle Istanze VM.

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 = "e2-medium" metadata_fingerprint = "s6I5s2tjfKw=" name = "terraform" project = "qwiklabs-gcp-42390cc9da8a4c4b" self_link = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/instances/terraform" tags_fingerprint = "42WmSpB8rSM=" zone = "{{{project_0.default_zone}}}" boot_disk { auto_delete = true device_name = "persistent-disk-0" source = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/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.

Attività 3: 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

Complimenti per aver completato questo lab! Hai imparato a usare Terraform per creare e gestire l'infrastruttura su Google Cloud.

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 una Quest ti permette di ottenere un badge come riconoscimento dell'obiettivo raggiunto. Puoi rendere pubblici i tuoi badge inserendone i link nel tuo CV online o sui social media. Iscriviti a una delle Quest contenenti il lab e ricevi un riconoscimento subito dopo averlo completato. Per vedere tutte le Quest disponibili, consulta il catalogo di Google Cloud Skills Boost.

Segui il prossimo lab

Continua la Quest con Infrastruttura sotto forma di codice con Terraform. Puoi anche controllare questi lab Google Cloud Skills Boost:

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: 26 gennaio 2024

Ultimo test del lab: 10 agosto 2023

Copyright 2024 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.