Cómo hacer un bucle en Terraform

Cómo hacer un bucle en Terraform
Terraform ofrece un modelo de idioma declarativo. Aunque esto hace que sea muy fácil y eficiente definir recursos, puede carecer de algunas características fundamentales útiles en operaciones diarias.

Por ejemplo, los idiomas declarativos específicos no admiten el flujo de control, como los bucles. Por lo tanto, cuando necesite crear un código de código repetitivo, deberá copiar y pegar predeterminados. Este no es un método muy eficiente para ningún desarrollador.

Terraform entiende esto y proporciona algunas características que ayudan con características, como condicionales y bucles. En este artículo, aprenderá cómo usar el recuento, for_each y para expresiones en terrbraform.

Los basicos

Terraform proporciona tres estructuras principales cuando se trabaja con bucles. Éstas incluyen:

  1. Contar
  2. Para cada
  3. Para

Entendamos cómo usar cada una de estas construcciones de bucle.

Contar parámetro

El bloque de recursos en Terraform define principalmente y administra un solo objeto en la nube. Sin embargo, es posible que deba crear o administrar múltiples objetos sin crear cada bloque para cada objeto. Hacer esto elimina el código repetitivo, lo que facilita la lectura y la operación.

Una forma de lograr esto es el uso del meta-argumento de conteo. Si define un bloque de recursos que incluye el parámetro de conteo con el valor como un número entero, Terraform realizará las acciones en el número especificado de recursos.

Uso básico

El parámetro de conteo, también conocido como meta-argumento, se puede usar en los bloques de recursos o módulos.

Acepta un número entero o entero y realizará las acciones especificadas en las muchas instancias seleccionadas. Por ejemplo, si establece el recuento en 5 en un bloque de recursos que crea cubos S3, Terraform creará cinco instancias de cubos S3.

Sin embargo, Terraform creará un objeto de infraestructura único para cada elemento. Por lo tanto, cada elemento recibe operaciones crud por separado.

El siguiente ejemplo muestra cómo usar el parámetro de recuento en Terraform:

Terraform
requerido_providers
AWS =
fuente = "Hashicorp/AWS"
versión = "-> 3.27 "


requerido_version = "> = 0.12 "

Proveedor "AWS"
perfil = "predeterminado"
región = "US-East-1"

Recurso "AWS_Instance" "Web_Server"
Amo = "AMI-234C45E2"
instance_type = "t1.micro"
recuento = 3
etiquetas =
Name = "Versión de servidor web: $ Count.índice"

El código de ejemplo anterior crea tres instancias de AWS de tipo T1.micro. También usamos el método de conteo para crear etiquetas con el número de instancias.

El atributo de índice le permite modificar la configuración para cada elemento. El índice de recuento es un valor distinto que describe cada instancia a partir de 0.

A diferencia de la mayoría de los meta-argumentos de Terraform, el valor del parámetro de conteo debe conocerse de antemano.

Parámetro for_each

El parámetro for_each es muy similar al argumento de recuento. Puede usarlo con un recurso y bloque de módulos.

Uso básico

El parámetro for_each acepta un conjunto de cadenas o un mapa. Luego, crea una instancia específica para cada elemento de la colección. Similar al recuento, cada elemento tiene una identificación de infraestructura de objeto única que permite que Terraform realice operaciones CRUD individualmente en un objeto específico.

El siguiente fragmento muestra cómo usar el elemento for_each para crear varios usuarios:

recursos "AWS_IAM_USER" "Web-Managers"
for_each = toset (["John", "Lucy", "Harley", "David"])
nombre = cada uno.llave

El ejemplo anterior muestra cómo usar el for_each con un conjunto de cadenas. Para usar un mapa, considere el código que se muestra a continuación:

for_each =
grupo = "web"
Group_b = "db"

nombre = cada uno.llave
Ubicación = cada uno.valor

Para parámetro

El parámetro For Loop no es muy diferente de la operación para la mayoría de los lenguajes de programación. Le permite recurrir a una lista de elementos.

Por ejemplo, suponga que tiene una lista de usuarios y desea convertir los nombres de usuario en mayúsculas. En el caso, puede usar un bucle for:

usernames = tolist (["UserName1", "UserName2", UserName3])
[Foriinusernames.Lista: superior (s)]

El código anterior expande los elementos en la lista y convierte cada uno en mayúsculas. Obtenga más información sobre Terraform para expresiones en la documentación.

Conclusión

Esta guía le brinda los conceptos básicos de realizar operaciones de bucle en Terraform usando Count, For_each y For Expressions. Esperamos que haya encontrado los ejemplos utilizando los tres parámetros útiles. Consulte Linux Sugerencia para obtener más consejos e información.