Creazione di script e configurazione di Terraform
In questa unità viene illustrata la creazione di script e la configurazione di Terraform.
Perché Terraform?
Il responsabile dell'infrastruttura necessita di uno strumento per il provisioning e la gestione dell'infrastruttura di Azure. Si vuole anche usare l'infrastruttura come codice nei file di configurazione che descrivono la topologia delle risorse di Azure.
Terraform di HashiCorp è ideale per la distribuzione dell'infrastruttura ai provider di servizi cloud. Offre agli sviluppatori strumenti coerenti per gestire la definizione di ogni infrastruttura.
Automatizzare la gestione dell'infrastruttura
I file di configurazione basati su modello di Terraform consentono di definire, eseguire il provisioning e configurare le risorse di Azure in modo prevedibile e ripetibile. Questa automazione offre diversi vantaggi:
- Riduce il rischio di errori umani durante la distribuzione e la gestione dell'infrastruttura.
- Distribuisce lo stesso modello più volte per creare ambienti di sviluppo, test e produzione identici.
- Riduce i costi degli ambienti di sviluppo e test creandoli su richiesta.
Comprendere le modifiche apportate all'infrastruttura prima che vengano applicate
Poiché la topologia delle risorse diventa sempre più complessa, può essere difficile comprendere il significato e l'effetto delle modifiche apportate all'infrastruttura.
Con Terraform è possibile convalidare e visualizzare in anteprima le modifiche dell'infrastruttura prima di applicarle. I membri del team possono collaborare in modo più efficace comprendendo le modifiche proposte e prevedendone l'effetto sul processo di sviluppo.
File di configurazione di Terraform
I file di configurazione generano un piano di esecuzione e le operazioni eseguite in base al piano per raggiungere lo stato desiderato. Terraform potrà quindi compilare l'infrastruttura descritta. Man mano che la configurazione viene modificata, Terraform è in grado di individuare le modifiche e creare piani di esecuzione incrementali.
I file di configurazione di Terraform usano il proprio linguaggio di configurazione, simile a YAML, progettato per consentire una descrizione dell'infrastruttura.
Per creare i file di configurazione viene usata la sintassi HCL (HashiCorp Configuration Language). HCL è dichiarativa e descrive l'obiettivo previsto anziché i passaggi per raggiungere l'obiettivo. La sintassi HCL consente di specificare il provider di servizi cloud, ad esempio Azure, e gli elementi che costituiscono l'infrastruttura cloud.
I file di configurazione vengono archiviati come file di testo normale con estensione tf. Sono:
- main.tf: (obbligatorio) definisce la struttura principale, distribuendo l'infrastruttura completa direttamente o tramite chiamate ai moduli.
- outputs.tf: identifica ogni valore restituito di un modulo Terraform.
- variables.tf: definisce le variabili in main.tf, indipendentemente dal fatto che siano obbligatorie o meno.
moduli
È possibile raggruppare le risorse di Terraform in un modulo, consentendo di creare un'unità di configurazione più grande. Questi moduli sono set di file di configurazione archiviati in un'unica directory. Una configurazione semplice è costituita da una singola directory con uno o più file con estensione tf.
I moduli offrono molti vantaggi. Ad esempio, i moduli:
- Facilitano l'organizzazione del progetto.
- Incapsulano la complessità.
- Consentono di riutilizzare le attività comuni.
- Offrono coerenza e assicurano che vengano seguite le procedure consigliate.
File main.tf
Il file main.tf contiene l'insieme principale di dettagli di configurazione per il modulo. Questo file viene spesso definito piano di Terraform. Il piano di Terraform specifica le risorse dell'infrastruttura necessarie. È possibile assegnare al file qualsiasi nome, ma spesso è denominato main.tf.
Flusso di lavoro di Terraform
Terraform consiglia il proprio flusso di lavoro di base "inizializzazione, pianificazione e applicazione" per l'automazione. Questo flusso di lavoro esegue tutte le azioni di integrazione continua e recapito continuo (CI/CD) nelle richieste pull Git nuove e aggiornate.
Le azioni principali di questo flusso di lavoro sono:
- Inizializzazione: inizializzare una directory di lavoro con i file di configurazione di Terraform.
- Pianificazione: produrre un piano per modificare le risorse in base alla configurazione corrente.
- Applicazione: applicare le modifiche descritte dal piano.
Provincia
Stato consente a Terraform di individuare le risorse di Azure da aggiungere, aggiornare o eliminare.
Terraform usa lo stato per creare piani e apportare modifiche all'infrastruttura. Prima di qualsiasi operazione, Terraform aggiorna lo stato con l'infrastruttura reale.
Per impostazione predefinita, lo stato è archiviato in un file di testo locale denominato terraform.tfstate. Terraform gestisce questo file usando le azioni del flusso di lavoro definite nei moduli.
È anche possibile archiviare lo stato in modalità remota. Questo approccio è più efficace in un ambiente di team. Per altre informazioni sulla gestione dello stato in remoto, vedere l'unità Riepilogo alla fine del modulo.
Passaggi successivi
Nell'unità successiva verrà illustrato l'uso di Terraform con GitHub Actions o Azure Pipelines per il provisioning e la distribuzione delle applicazioni.