Variabili Terraform

Variabili Terraform
Terraform è emerso come uno degli strumenti di provisioning leader per lo sviluppo multi-cloud. Utilizza il proprio linguaggio basato sulla sintassi denominata - HCl (linguaggio di configurazione Hashicorp), sebbene sia esso stesso sviluppato in Golang.

Terraform viene utilizzato per automatizzare e gestire infrastrutture, piattaforme e servizi utilizzando il linguaggio dichiarativo. Costruito ai fini dell'infrastruttura come soluzione di codice (IAC), Terraform supporta più fornitori di servizi cloud. È uno strumento open source sviluppato da Hashicorp. Utilizzando IAC, possiamo gestire la configurazione dell'infrastruttura con file di configurazione. Prua, testa.G., Possiamo distribuire, aggiornare e gestire la nostra infrastruttura definendo le risorse richieste.

Cosa copriremo?

In questa guida, apprenderemo le variabili Terraform. Vedremo perché le variabili Terraform sono importanti e come dovremmo definirle e usarle.

Perché dovresti preoccuparti delle variabili Terraform?

In Terraform, possiamo assegnare valori agli argomenti tramite letterali come numeri interi e stringhe. Questo può essere un buon approccio per le piccole configurazioni di infrastrutture, ma man mano che le dimensioni dell'infrastruttura crescono, questo approccio diventa molto inefficiente. In tali casi, possiamo usare le variabili di input di Terraform, in cui dichiariamo un valore in un solo posto e quindi utilizziamo quel valore in altre parti del codice e dei file facendole riferimento. Questo approccio è più efficiente in quanto rende il codice riutilizzabile e composibile.

Si noti che Terraform utilizza il termine "variabili" o "variabili Terraform" per fare riferimento alle variabili di input.

Definizione di una variabile

In Terraform, le variabili sono definite all'interno di un blocco denominato "variabile", che ha il seguente tipo di sintassi:

variabile variabile_name argomenti

La parola chiave "variabile" stessa dichiara il blocco come un tipo di blocco "variabile". La "variabile_name", dopo la parola chiave della variabile, è il nome della variabile che definiremo. Questo nome deve essere distintivo dalle altre variabili all'interno dello stesso modulo. Usando questo nome, alla variabile viene assegnato un valore dall'esterno. Allo stesso modo, usando il nome della variabile, possiamo fare riferimento al suo valore all'interno del modulo.

Si noti che i seguenti identificatori riservati non possono essere utilizzati per un nome variabile: origine, versione, provider, conte, per_each, lifecycle, dipende_on, locali.

Argomenti per il blocco variabile

I seguenti argomenti possono essere dichiarati all'interno di un blocco di tipo variabile:

Predefinito: imposta un valore predefinito per il blocco. Una variabile è facoltativa se è presente un valore predefinito. Questo valore verrà utilizzato se non viene specificato nessun altro valore durante la chiamata a un modulo.

Tipo: specifica i tipi di valori che possono essere utilizzati con la variabile.

Descrizione - È una sorta di commento sulla variabile stessa.

Convalida: è un blocco per definire condizioni/controlli per una variabile.

Sensibile: nasconde i dati riservati da mostrare durante l'esecuzione del comando "Piano" o "Applica".

Nullable: controlla se alla variabile può essere assegnato un valore all'interno del modulo.

Accesso ai valori di una variabile

Per accedere a un valore della variabile all'interno del modulo, utilizzare il formato:

var.

Dove "var" è un prefisso ed è l'etichetta dopo la parola chiave "variabile". Questo valore assegnato di una variabile è accessibile solo nelle espressioni all'interno del modulo in cui è stato definito. Ad esempio, considera una "chiave" variabile definita come:

variabile “Instance_Type”
impostazione predefinita = “T2.Micro "


Possiamo fare riferimento alla variabile sopra come segue:

risorsa "aws_instance" "esempio"
Instance_Type = "var.Instance_Type "
ami = var.Image_id

Variabili della riga di comando

Per l'assegnazione di un valore a una variabile nella riga di comando, Terraform utilizza l'opzione '-var'. Prua, testa.G., Quando vengono eseguiti il ​​comando Terraform Plan e Terraform Applicate, possiamo fare come segue:

1. Passando un istanza ami-id

$ TERRAFORF APPLICA -VAR = "Image_id = Ami -xyz123"


2. Passando un elenco di istanze Ami-IDS

$ TERRAFORF APPLIC -VAR = 'Image_id_List = ["Ami -XYZ123", "Ami -Abc456"]' -Var = "Instance_Type = T2.micro "


3. Passando un valore del tipo di mappa

$ TERRAFORF APPLIC -VAR = 'Image_id_Map = "US-EAST-1": "Ami-XYZ123", "US-EAST-2": "AMI-ABC456"'

File di definizioni variabili (.tfvars)

Quando ci sono molte variabili, è una buona idea metterle tutte in un file di definizione variabile (a .file tfvars o .tfvar.file json). Possiamo quindi passare questo file sulla riga di comando come segue:

$ TERRAFORF APPLICA -VAR -FILE = "Esempio.tfvars "


Questo file verrà analizzato automaticamente se viene chiamato 'Terraform.tfvars '.

Si noti che non inseriamo questo file in nessun sistema di controllo della sorgente per evitare l'esposizione a dati sensibili.

Anche se aggiungiamo '.auto "a un nome file prima".tfvars ', per esempio, myfile.auto.tfvars, questo file verrà caricato automaticamente senza specificare il flag "var-file". Questo è lo stesso del 'Terraform.File di Tfvars.

variabili ambientali

Le variabili di ambiente, con nomi prefissi con TF_VAR, possono essere utilizzate per definire le variabili di input. Prua, testa.G., "TF_VAR_MYKEKE" si riferirà al valore di una variabile Terraform chiamata "MyKey". Per impostare un singolo valore per questa variabile di ambiente su Unix/Linux, utilizzare il formato:

$ Tf_var_mykey = "FHJ7-47DD-HLL02-PJU8"


Allo stesso modo, per il sistema operativo Windows, usa il formato:

Imposta tf_var_mykey = "FHJ7-47DD-HLL02-PJU8"


In alternativa, possiamo anche usare la terraform.file tfvars.

Avvolgendo

Ora stiamo finalmente chiudendo questo articolo, anche se ci sono molte altre cose da coprire. Abbiamo presentato una visione di alto livello delle variabili Terraform. Oltre a Terraform, ci sono anche altri strumenti come AWS CloudFormation, Chef, Puppet, Ansible e così via. Ogni strumento ha i suoi vantaggi e limitazioni. Il vantaggio di utilizzare Terraform è che non è vincolato a un particolare fornitore di servizi.