Через пару месяцев, когда я не занимался изменениями в инфраструктуре, я попытался загрузить наши файлы terragrunt на новую машину и столкнулся с парой ошибок, решение которых не нашел.
В основном кажется, что файл terraform.tfvars
(или любой файл *.auto.tfvars
в этом отношении) игнорируется terraform, когда присутствует опция -var
или -var-file
.
Мы используем иерархическую конфигурацию terragrunt, чтобы иметь различную конфигурацию учетных данных для разных сред, поэтому существует файл account.tfvars
, содержащий все данные.
Все работало еще в августе этого года, так что, может быть, было изменение, которое я не заметил в журнале изменений?
конкретный модуль terraform.tfvars
:
terragrunt = {
include {
path = "${find_in_parent_folders()}"
}
terraform {
source = "../../../modules//cockpit"
}
}
bucket_prefix = "cockpit-"
domain_name = "cockpit.donutapp.io"
родитель terraform.tfvars
:
terragrunt = {
remote_state {
backend = "s3"
config {
encrypt = true
bucket = "my-${get_aws_account_id()}-tfstate"
key = "production/${path_relative_to_include()}/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "terraform-locks"
}
}
terraform {
extra_arguments "bucket" {
commands = ["${get_terraform_commands_that_need_vars()}"]
optional_var_files = [
"${get_tfvars_dir()}/${find_in_parent_folders("account.tfvars", "ignore")}",
]
arguments = [
"-var",
"terraform_bucket=my-${get_aws_account_id()}-tfstate",
]
}
extra_arguments "disable_input" {
commands = ["${get_terraform_commands_that_need_input()}"]
arguments = ["-input=false"]
}
}
}
выполненная команда terragrunt:
terraform plan -var terraform_bucket=my-accountid-tfstate \
-var-file=some-path/../account.tfvars \
-input=false
Когда я добавляю -var-file=terraform.tfvars
в качестве аргумента к команде terraform plan
в папке .terragrunt-cache
, она работает, поэтому она просто не загружается автоматически.
Какие-нибудь мысли?
-var-file
к команде плана является жизнеспособным обходным путем, но может не работать для всех. - person celestialorb   schedule 29.10.2018