Variables de terraformación

Variables de terraformación
Terraform ha surgido como una de las principales herramientas de aprovisionamiento para el desarrollo de múltiples nubes. Utiliza su propio lenguaje basado en sintaxis llamado - HCL (lenguaje de configuración Hashicorp), aunque se desarrolla en Golang.

Terraform se utiliza para automatizar y administrar infraestructuras, plataformas y servicios utilizando lenguaje declarativo. Construido para el propósito de la infraestructura como solución de código (IAC), Terraform admite múltiples proveedores de servicios en la nube. Es una herramienta de código abierto desarrollada por Hashicorp. Usando IAC, podemos administrar la configuración de infraestructura con archivos de configuración. Delantero.gramo., Podemos implementar, actualizar y administrar nuestra infraestructura definiendo los recursos requeridos.

¿Qué cubriremos??

En esta guía, aprenderemos sobre las variables de Terraform. Veremos por qué las variables de terraform son importantes y cómo debemos definirlas y usarlas.

¿Por qué deberías preocuparte por las variables de Terraform??

En Terraform, podemos asignar valores a los argumentos a través de literales como enteros y cuerdas. Este puede ser un buen enfoque para pequeñas configuraciones de infraestructura, pero a medida que el tamaño de la infraestructura crece, este enfoque se vuelve muy ineficiente. En tales casos, podemos usar las variables de entrada de Terraform, donde declaramos un valor en un solo lugar y luego usamos ese valor en otras partes del código y archivos haciendo referencia a ellas. Este enfoque es más eficiente, ya que hace que el código sea reutilizable y compuesto.

Tenga en cuenta que Terraform usa el término 'variables' o 'variables de terraza' para referencia a las variables de entrada.

Definición de una variable

En Terraform, las variables se definen dentro de un bloque 'variable' llamado, que tiene el siguiente tipo de sintaxis:

variable variable_name argumentos

La palabra clave 'variable' en sí declara el bloque como un tipo de bloque 'variable'. La 'variable_name', después de la palabra clave variable, es el nombre de la variable que vamos a definir. Este nombre debe ser distintivo de otras variables dentro del mismo módulo. Usando este nombre, a la variable se le asigna un valor desde el exterior. Del mismo modo, utilizando el nombre de la variable, podemos hacer referencia a su valor dentro del módulo.

Tenga en cuenta que los siguientes identificadores reservados no se pueden usar para un nombre de variable: fuente, versión, proveedores, recuento, for_each, lifecycle, depends_on, locales.

Argumentos para el bloque variable

Los siguientes argumentos pueden declararse dentro de un bloque de tipo variable:

predeterminado: establece un valor predeterminado para el bloque. Una variable es opcional si hay un valor predeterminado presente. Este valor se utilizará si no se especifica ningún otro valor al llamar a un módulo.

Tipo: especifica los tipos de valores que se pueden usar con la variable.

Descripción: es una especie de comentario sobre la variable misma.

Validación: es un bloque para definir condiciones/verificaciones para una variable.

Sensible: oculta los datos confidenciales que se muestran al ejecutar el comando 'Plan' o 'Aplicar'.

anulable: controla si a la variable se le puede asignar un valor dentro del módulo.

Acceder a los valores de una variable

Para acceder a un valor de la variable desde el módulo, use el formato:

varilla.

Donde 'var' es un prefijo y es la etiqueta después de la palabra clave 'variable'. Este valor asignado de una variable solo se puede acceder en expresiones dentro del módulo donde se definió. Como ejemplo, considere una variable 'clave' definida como:

variable "instance_type"
predeterminado = "T2.micro"


Podemos hacer referencia a la variable anterior de la siguiente manera:

Recurso "AWS_Instance" "Ejemplo"
instance_type = "var.instance_type "
ami = var.image_id

Variables de línea de comando

Para asignar un valor a una variable en la línea de comandos, Terraform usa la opción '-var'. Delantero.gramo., Cuando se ejecutan el plan de Terraform y Terraform Apply, podemos hacer lo siguiente:

1. Pasando una instancia ami-id

$ Terraform aplicar -var = "image_id = ami -xyz123"


2. Pasar una lista de ID de instancia de instancia

$ Terraform aplicar -var = 'image_id_list = ["ami -xyz123", "ami -abc456"]' -var = "instance_type = t2.micro"


3. Pasar un valor de tipo de mapa

$ Terraform aplicar -var = 'image_id_map = "us-east-1": "ami-xyz123", "us-east-2": "ami-abc456"'

Archivos de definiciones variables (.tfvars)

Cuando hay muchas variables, es una buena idea ponerlas todas en un archivo de definición variable (un .archivo tfvars o .tfvars.archivo json). Luego podemos pasar este archivo en la línea de comando de la siguiente manera:

$ Terraform aplicar -var -file = "Ejemplo.tfvars "


Este archivo se analizará automáticamente si se llama 'Terraform.tfvars '.

Tenga en cuenta que no colocamos este archivo en ningún sistema de control de origen para evitar la exposición a cualquier datos confidenciales.

También si agregamos '.automático 'a un nombre de archivo antes'.tfvars ', por ejemplo, myfile.auto.TFVARS, este archivo se cargará automáticamente sin especificar el indicador 'Var-File'. Esto es lo mismo que el 'Terraform.Archivo de TFVARS.

Variables de entorno

Las variables de entorno, con nombres prefijados con TF_VAR, se pueden usar para definir las variables de entrada. Delantero.gramo., "TF_VAR_MYKEY" se referirá al valor de una variable Terraform llamada "MyKey". Para establecer un único valor para esta variable de entorno en Unix/Linux, use el formato:

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


Del mismo modo, para Windows OS, use el formato:

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


Alternativamente, también podemos usar el Terraform.archivo tfvars.

Terminando

Ahora finalmente estamos cerrando este artículo, aunque hay muchas otras cosas que cubrir. Hemos presentado una vista de alto nivel de las variables de Terraform. Además de Terraform, también hay otras herramientas como AWS CloudFormation, Chef, Puppet, Ansible, etc. Cada herramienta tiene sus propias ventajas y limitaciones. El beneficio de usar Terraform es que no está vinculado a un proveedor de servicios particular.