web-dev-qa-db-fra.com

terraform.tfvars vs différence variables.tf

J'ai fait des recherches sur cela, mais je ne trouve pas la distinction. Un fichier variables.tf peut stocker des valeurs/valeurs par défaut variables, comme un fichier terraform.tfvars.

Quelle est la différence entre ces deux et la nécessité de l'un par rapport à l'autre? Ma compréhension est que si vous passez le fichier var comme argument dans terraform via la ligne de commande.

Il existe déjà un fil conducteur à ce sujet et le seul avantage semble être de passer dans le fichier tfvars comme argument, car vous pouvez "potentiellement" faire l'affectation de variables dans un fichier variable.tf.

Est-ce la bonne pensée?

8
GurdeepS

La distinction entre ceux-ci est de déclaration vs affectation .

variable blocs (qui peuvent en fait apparaître dans n'importe quel fichier .tf, mais qui sont par convention variables.tf) déclarent qu'une variable existe:

variable "example" {}

Cela indique à Terraform que ce module accepte une variable d'entrée appelée example. En indiquant cela, vous pouvez utiliser var.example Ailleurs dans le module pour accéder à la valeur de la variable.

Il existe plusieurs façons d'affecter une valeur à cette variable d'entrée:

  • Incluez les options -var Sur la ligne de commande terraform plan Ou terraform apply.
  • Incluez les options -var-file Pour sélectionner un ou plusieurs fichiers .tfvars Pour définir les valeurs de nombreuses variables à la fois.
  • Créez un fichier terraform.tfvars Ou des fichiers nommés .auto.tfvars, Qui sont traités de la même manière que les arguments -var-file Mais sont chargés automatiquement.
  • Pour un module enfant, incluez une expression à affecter à la variable à l'intérieur du bloc appelant module.

Une variable peut éventuellement être déclarée avec une valeur par défaut, ce qui la rend facultative. Les valeurs par défaut variables sont utilisées dans les situations où il existe un bon comportement par défaut qui fonctionnerait bien pour la plupart des utilisations du module/de la configuration, tout en permettant à ce comportement d'être annulée dans des cas exceptionnels.

Les différents moyens d'attribuer des valeurs variables sont pour traiter les différences . Ce que cela signifie dépendra exactement de la façon dont vous utilisez Terraform, mais par exemple si vous utilisez plusieurs fois la même configuration pour déployer différentes "copies" de la même infrastructure (environnements, etc.), vous pouvez alors choisir d'avoir un autre .tfvars Pour chacune de ces copies.

Étant donné que terraform.tfvars Et .auto.tfvars Sont automatiquement chargés sans aucune option supplémentaire, ils se comportent de la même manière que les valeurs par défaut, mais leur objectif est différent. Lorsque exécutant Terraform dans l'automatisation , certains utilisateurs demandent à leur automatisation de générer un fichier terraform.tfvars Ou .auto.tfvars Juste avant d'exécuter Terraform afin de transmettre des valeurs connues de l'automatisation, telles que pour quel environnement l'automatisation fonctionne, etc.

La différence entre les fichiers .tfvars Chargés automatiquement et les valeurs par défaut des variables est plus claire lorsqu'il s'agit de modules enfants. Les fichiers .tfvars (Et les options -var, -var-file) S'appliquent uniquement à la racine module variables , tandis que les valeurs par défaut des variables s'appliquent également lorsque ce module est utilisé comme module enfant, ce qui signifie que les variables avec valeurs par défaut peuvent être omises dans module blocks .

13
Martin Atkins

Un fichier variables.tf est utilisé pour définir le type de variables et éventuellement définir une valeur par défaut.

Un fichier terraform.tfvars est utilisé pour définir les valeurs réelles des variables.

Vous pouvez définir des valeurs par défaut pour toutes vos variables et ne pas utiliser du tout de fichiers tfvars.

En fait, l'objectif de la séparation entre les définitions et les valeurs est de permettre la définition d'une conception d'infrastructure commune, puis d'appliquer des valeurs spécifiques par environnement.

L'utilisation de plusieurs fichiers tfvars que vous donnez comme argument vous permet de définir différentes valeurs par environnement: secrets, VM, nombre d'instances, etc.

9
scrambler