Come fare un giro in Terraform

Come fare un giro in Terraform
Terraform offre un modello linguistico dichiarativo. Sebbene ciò rende molto facile ed efficiente definire le risorse, può mancare alcune funzionalità fondamentali utili nelle operazioni quotidiane.

Ad esempio, i linguaggi dichiarativi specifici non supportano il flusso di controllo, come i loop. Pertanto, quando è necessario creare ripetutamente un pezzo di codice, dovrai essere predefinito per copiare e incollare. Questo non è un metodo molto efficiente per qualsiasi sviluppatore.

Terraform lo comprende e fornisce alcune funzionalità che aiutano con le funzionalità, come condizionali e loop. In questo articolo, imparerai come utilizzare il conteggio, for_each e per le espressioni in Terraform.

Le basi

Terraform fornisce tre strutture principali quando si lavora con i loop. Questi includono:

  1. Contare
  2. Per ciascuno
  3. Per

Capiamo come usare ciascuno di questi costrutti di loop.

Conta il parametro

Il blocco delle risorse in Terraform definisce e gestisce principalmente un singolo oggetto nel cloud. Tuttavia, potrebbe essere necessario creare o gestire più oggetti senza creare ogni blocco per ogni oggetto. Fare questo rimuove il codice ripetitivo, rendendo così più facile leggere e operare.

Un modo per raggiungere questo obiettivo è l'uso del meta-argomentazione del conteggio. Se si definisce un blocco di risorse che include il parametro di conteggio con il valore come numero intero, Terraform eseguirà le azioni sul numero specificato di risorse.

Uso di base

Il parametro di conteggio, noto anche come meta-argomentazione, può essere utilizzato nei blocchi di risorse o moduli.

Accetta un numero intero o un numero intero e eseguirà le azioni specificate nelle numerose istanze selezionate. Ad esempio, se si imposta il conteggio su 5 su un blocco di risorse che crea secchi S3, Terraform creerà cinque istanze del secchio S3.

Tuttavia, Terraform creerà un oggetto infrastrutturale unico per ogni articolo. Quindi, ogni articolo riceve operazioni CRUD separatamente.

L'esempio seguente mostra come utilizzare il parametro di conteggio in Terraform:

Terraform
richiesto_providers
aws =
Source = "Hashicorp/AWS"
versione = "-> 3.27 "


richiesto_version = "> = 0.12 "

Provider "AWS"
profilo = "predefinito"
regione = "US-EAST-1"

risorsa "aws_instance" "web_server"
AMO = "AMI-234C45E2"
Instance_Type = "T1.micro "
conteggio = 3
tags =
Name = "versione webserver: $ conta.indice"

Il codice di esempio sopra crea tre istanze AWS di tipo T1.Micro. Utilizziamo anche il metodo di conteggio per creare tag con il numero di istanze.

L'attributo indice consente di modificare la configurazione per ciascun elemento. L'indice di conteggio è un valore distinto che descrive ogni istanza a partire da 0.

A differenza della maggior parte dei meta-argomenti Terraform, il valore del parametro di conteggio deve essere noto in anticipo.

Parametro per_each

Il parametro for_each è strettamente simile all'argomento del conteggio. È possibile utilizzarlo con una risorsa e un blocco del modulo.

Uso di base

Il parametro For_each accetta un set di stringhe o una mappa. Quindi, crea un'istanza specifica per ogni elemento della raccolta. Simile al conteggio, ogni elemento ha un ID infrastruttura di oggetti univoco che consente a Terraform di eseguire le operazioni CRUD individualmente su un oggetto specifico.

Il seguente snippet mostra come utilizzare l'elemento For_each per creare più utenti:

risorsa "aws_iam_user" "Web-manager"
for_each = toset (["John", "Lucy", "Harley", "David"])
nome = ciascuno.chiave

L'esempio precedente mostra come utilizzare For_each con una serie di stringhe. Per utilizzare una mappa, considera il codice mostrato di seguito:

for_each =
gruppo = "web"
group_b = "db"

nome = ciascuno.chiave
posizione = ciascuno.valore

Per parametro

Il parametro per loop non è molto diverso dal funzionamento nella maggior parte dei linguaggi di programmazione. Ti consente di eseguire il loop tramite un elenco di elementi.

Ad esempio, supponiamo di avere un elenco di utenti e vuoi convertire i nomi utente in maiuscolo. In tal caso, puoi usare un ciclo per:

UserNames = Tolist (["Username1", "Username2", Username3])
[FORIINUSERNAMES.Elenco: Upper (s)]

Il codice precedente espande gli elementi nell'elenco e converte ciascuno in maiuscolo. Ulteriori informazioni su Terraform per le espressioni nella documentazione.

Conclusione

Questa guida ti dà le basi dell'esecuzione delle operazioni di loop in Terraform usando Count, For_each e per le espressioni. Speriamo che tu abbia trovato utili gli esempi usando i tre parametri. Dai un'occhiata al suggerimento di Linux per ulteriori suggerimenti e informazioni.