github/gitignore · Terraform.gitignore
Разбор шаблона .gitignore для Terraform
Почему Terraform.gitignore игнорирует папку .terraform, tfstate, tfvars, файлы override и настройки CLI, и почему .terraform.lock.hcl нужно коммитить.
Terraform.gitignore в репозиториях с инфраструктурным кодом нацелен на то, чтобы не допустить утечки состояния и секретов. В файле состояния Terraform атрибуты ресурсов хранятся открытым текстом, и там могут оказаться пароли баз данных или ключи.
.terraform.lock.hcl этот шаблон не игнорирует. HashiCorp рекомендует включать этот файл блокировки зависимостей в систему контроля версий.
Разбор правил
| Шаблон | Что и почему игнорируется |
|---|---|
.terraform/ | Локальный рабочий каталогСюда попадают бинарники провайдеров и модули, загруженные terraform init, и настройки бэкенда. Бинарники зависят от ОС, поэтому делиться ими нельзя, и они большие. |
*.tfstate*.tfstate.*.terraform.tfstate.lock.info | Файлы состоянияФайл, где записано соответствие между реальной инфраструктурой и кодом. В него открытым текстом попадают чувствительные данные, а если у нескольких людей свои копии, состояние расходится. Его хранят в удалённом бэкенде вроде S3 или Terraform Cloud и включают блокировку. |
*.tfvars*.tfvars.json | Файлы значений переменныхФайлы со значениями для окружений и секретами. Комментарий шаблона тоже поясняет, что туда с высокой вероятностью попадут пароли и закрытые ключи. |
override.tfoverride.tf.json*_override.tf*_override.tf.json | Файлы overrideФайлы для временного локального переопределения настроек ресурсов. Чтобы закоммитить такой файл, верните его, как в комментарии шаблона, в форме !example_override.tf. |
crash.logcrash.*.log | Журналы сбоевЖурналы, которые Terraform оставляет при аварийном завершении; в них может попасть содержимое конфигурации. |
.terraformrcterraform.rc | Настройки CLIФайлы настроек CLI; в них может храниться токен аутентификации Terraform Cloud. |
На что обратить внимание на практике
.terraform.lock.hclкоммитьте. Тогда все будут инициализировать проект с одинаковыми версиями и хэшами провайдеров.- Общие значения по умолчанию храните не в
*.auto.tfvars, а вdefaultвvariables.tfили в файле-примере (terraform.tfvars.example). Правило*.tfvarsне игнорирует файлы, оканчивающиеся на.example. - Файл плана, созданный командой
terraform plan -out=tfplan, тоже содержит чувствительные данные, поэтому безопаснее добавить правило*tfplan*, как в комментарии шаблона. - Если файл состояния уже закоммичен, не только удалите его из репозитория, но и замените все секреты, которые в нём были.
Исходный шаблон
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
Источник шаблонов: github/gitignore/Terraform.gitignore @356fd7b (2026-09-11) · CC0-1.0