Terraform Variables

Terraform Variables
Terraform est devenu l'un des principaux outils d'approvisionnement pour le développement multi-cloud. Il utilise son propre langage basé sur une syntaxe nommé - HCL (Hashicorp Configuration Language), bien qu'il soit lui-même développé à Golang.

Terraform est utilisé pour l'automatisation et la gestion des infrastructures, plates-formes et services en utilisant un langage déclaratif. Construit aux fins de l'infrastructure en tant que solution de code (IAC), Terraform prend en charge plusieurs fournisseurs de services cloud. C'est un outil open source développé par Hashicorp. En utilisant IAC, nous pouvons gérer la configuration des infrastructures avec des fichiers de configuration. Pour e.g., Nous pouvons déployer, mettre à jour et gérer notre infrastructure en définissant les ressources requises.

Que couvrirons-nous?

Dans ce guide, nous découvrirons les variables Terraform. Nous verrons pourquoi les variables Terraform sont importantes et comment nous devons les définir et les utiliser.

Pourquoi devriez-vous vous soucier des variables Terraform?

Dans Terraform, nous pouvons attribuer des valeurs aux arguments via des littéraux comme des entiers et des cordes. Cela peut être une bonne approche pour les configurations de petites infrastructures, mais à mesure que la taille de l'infrastructure augmente, cette approche devient très inefficace. Dans de tels cas, nous pouvons utiliser les variables d'entrée de Terraform, où nous déclarons une valeur à un seul endroit, puis utilisons cette valeur dans d'autres parties du code et des fichiers en les faisant référence. Cette approche est plus efficace car elle rend le code réutilisable et composable.

Notez que TerraForm utilise le terme «variables» ou «variables Terraform» pour référencer les variables d'entrée.

Définir une variable

Dans Terraform, les variables sont définies dans un bloc nommé «variable», qui a le type de syntaxe suivant:

variable variable_name arguments

Le mot-clé «variable» lui-même déclare le bloc comme un type de bloc «variable». Le 'variable_name', après le mot clé variable, est le nom de la variable que nous allons définir. Ce nom doit être distinctif des autres variables dans le même module. En utilisant ce nom, la variable se voit attribuer une valeur de l'extérieur. De même, en utilisant le nom de la variable, nous pouvons référencer sa valeur dans le module.

Notez que les identificateurs réservés suivants ne peuvent pas être utilisés pour un nom de variable: source, version, fournisseurs, comte, for_each, cycle de vie, Depend_on, locaux.

Arguments pour le bloc variable

Les arguments suivants peuvent être déclarés dans un bloc de type variable:

par défaut - il définit une valeur par défaut pour le bloc. Une variable est facultative si une valeur par défaut est présente. Cette valeur sera utilisée si aucune autre valeur n'est spécifiée lors de l'appel d'un module.

Type - Il spécifie les types de valeurs qui peuvent être utilisées avec la variable.

Description - C'est une sorte de commentaire sur la variable elle-même.

Validation - Il s'agit d'un bloc pour définir les conditions / contrôles d'une variable.

Sensitif - il cache des données confidentielles à afficher lors de l'exécution de la commande «Plan» ou «Appliquer».

Nullable - il contrôle si la variable peut se voir attribuer une valeur dans le module.

Accéder aux valeurs d'une variable

Pour accéder à une valeur de la variable à partir du module, utilisez le format:

var.

Où 'var' est un préfixe et est l'étiquette après le mot clé 'variable'. Cette valeur attribuée d'une variable ne peut être accessible que dans des expressions dans le module où il a été défini. À titre d'exemple, considérons une variable «clé» définie comme:

variable "instance_type"
par défaut = "T2.micro "


Nous pouvons référencer la variable ci-dessus comme suit:

ressource "aws_instance" "Exemple"
instance_type = "var.instance_type "
ami = var.image_id

Variables de ligne de commande

Pour attribuer une valeur à une variable sur la ligne de commande, Terraform utilise l'option «-var». Pour e.g., Lorsque le plan Terraform et la commande Terraform Apply sont exécutés, nous pouvons le faire comme suit:

1. Passer une instance ami-id

$ terraform applique -var = "image_id = ami-xyz123"


2. Passer une liste d'instructions Ami-IDS

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


3. Passer une valeur de type de carte

$ terraform applique -var = 'image_id_map = "US-East-1": "Ami-xyz123", "US-East-2": "Ami-ABC456"'

Fichiers de définitions variables (.tfvars)

Lorsqu'il y a beaucoup de variables, c'est une bonne idée de les mettre tous dans un fichier de définition variable (A .fichier tfvars ou .tfvars.Fichier JSON). Nous pouvons ensuite passer ce fichier sur la ligne de commande comme suit:

$ terraform applique -var-file = "Exemple.tfvars "


Ce fichier sera analysé automatiquement s'il est nommé 'Terraform.tfvars '.

Notez que nous ne mettons ce fichier dans aucun système de contrôle source pour éviter l'exposition à des données sensibles.

Aussi si nous ajoutons '.Auto 'à un nom de fichier avant'.tfvars ', par exemple, myfile.auto.TFVARS, ce fichier sera chargé automatiquement sans spécifier l'indicateur «var-fichier». C'est la même chose que la 'Terraform.fichier de tfvars.

Variables d'environnement

Les variables d'environnement, avec des noms préfixées avec TF_VAR, peuvent être utilisées pour définir les variables d'entrée. Pour e.g., "TF_VAR_MYKEY" fera référence à la valeur d'une variable Terraform nommée "Mykey". Pour définir une seule valeur pour cette variable d'environnement sur Unix / Linux, utilisez le format:

$ Tf_var_mykey = "fhj7-47dd-hll02-pJU8"


De même, pour Windows OS, utilisez le format:

SET TF_VAR_MYKEY = "FHJ7-47DD-HLL02-PJU8"


Alternativement, nous pouvons également utiliser la terraform.fichier tfvars.

Emballer

Nous fermons enfin cet article, bien qu'il y ait beaucoup d'autres choses à couvrir. Nous avons présenté une vue de haut niveau des variables Terraform. Outre Terraform, il existe également d'autres outils comme AWS Cloudformation, Chef, Puppet, Ansible, etc. Chaque outil a ses propres avantages et limitations. L'avantage de l'utilisation de Terraform est qu'il n'est pas lié à un fournisseur de services particulier.