github/gitignore · Terraform.gitignore
Modèle .gitignore Terraform expliqué
Explique pourquoi Terraform.gitignore ignore le dossier .terraform, tfstate, tfvars, les fichiers override et la configuration du CLI, et pourquoi .terraform.lock.hcl doit être commité.
Terraform.gitignore vise avant tout à empêcher la fuite de l'état et des secrets dans les dépôts de code d'infrastructure. Les fichiers d'état Terraform stockent les attributs des ressources en clair et peuvent contenir des mots de passe de base de données ou des clés.
Ce modèle n'ignore pas .terraform.lock.hcl. HashiCorp recommande d'inclure ce fichier de verrouillage des dépendances dans le contrôle de version.
Explication règle par règle
| Motif | Ce qui est ignoré et pourquoi |
|---|---|
.terraform/ | Répertoire de travail localContient les binaires de providers et les modules téléchargés par terraform init, ainsi que la configuration du backend. Ce sont des binaires propres à chaque système d'exploitation, impossibles à partager et volumineux. |
*.tfstate*.tfstate.*.terraform.tfstate.lock.info | Fichiers d'étatFichiers qui enregistrent la correspondance entre l'infrastructure réelle et le code. Des informations sensibles y figurent en clair, et si plusieurs personnes détiennent chacune leur copie, les états divergent. Placez-les dans un backend distant comme S3 ou Terraform Cloud avec un verrouillage. |
*.tfvars*.tfvars.json | Fichiers de valeurs de variablesFichiers contenant des valeurs propres à chaque environnement et des secrets. Les commentaires du modèle précisent eux aussi qu'ils contiennent très probablement des mots de passe ou des clés privées. |
override.tfoverride.tf.json*_override.tf*_override.tf.json | Fichiers overrideFichiers qui surchargent temporairement la configuration des ressources en local. Pour en commiter un, réincluez-le sous la forme !example_override.tf, comme le montrent les commentaires du modèle. |
crash.logcrash.*.log | Logs de crashLogs laissés par Terraform lors d'un arrêt anormal ; ils peuvent contenir des éléments de configuration. |
.terraformrcterraform.rc | Configuration du CLIFichiers de configuration du CLI, susceptibles de contenir un jeton d'authentification Terraform Cloud. |
Points d'attention en pratique
- Commitez
.terraform.lock.hcl. Tout le monde initialise alors avec les mêmes versions et empreintes de providers. - Les variables par défaut à partager se placent dans le
defaultdevariables.tfou dans un fichier d'exemple (terraform.tfvars.example), pas dans*.auto.tfvars. La règle*.tfvarsn'ignore pas les fichiers qui se terminent par.example. - Les fichiers de plan créés avec
terraform plan -out=tfplancontiennent aussi des informations sensibles : il est plus sûr d'ajouter la règle*tfplan*, comme le suggèrent les commentaires du modèle. - Si un fichier d'état a déjà été commité, retirez-le du dépôt et remplacez aussi tous les secrets qu'il contenait.
Modèle d'origine
Terraform.gitignore
# Local .terraform directories.terraform/# .tfstate files*.tfstate*.tfstate.*# Crash log filescrash.logcrash.*.log# Exclude all .tfvars files, which are likely to contain sensitive data, such as# password, private keys, and other secrets. These should not be part of version# control as they are data points which are potentially sensitive and subject# to change depending on the environment.*.tfvars*.tfvars.json# Ignore override files as they are usually used to override resources locally and so# are not checked inoverride.tfoverride.tf.json*_override.tf*_override.tf.json# Ignore transient lock info files created by terraform apply.terraform.tfstate.lock.info# Include override files you do wish to add to version control using negated pattern# !example_override.tf# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan# example: *tfplan*# Ignore CLI configuration files.terraformrcterraform.rc# Optional: ignore graph output files generated by `terraform graph`# *.dot# Optional: ignore plan files saved before destroying Terraform configuration# Uncomment the line below if you want to ignore planout files.# planout
Source des modèles : github/gitignore/Terraform.gitignore @356fd7b (2026-09-11) · CC0-1.0