github/gitignore · Terraform.gitignore

Разбор шаблона .gitignore для Terraform

Почему Terraform.gitignore игнорирует папку .terraform, tfstate, tfvars, файлы override и настройки CLI, и почему .terraform.lock.hcl нужно коммитить.

Открыть в генераторе Открыть вместе с macOS, VisualStudioCode, JetBrains

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.gitignoreСтрок правил: 14
# 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

Шаблоны, используемые вместе

Разборы других шаблонов