gpt4 book ai didi

Terraform 在使用 -var 或 -var-file 时忽略 terraform.tfvars 文件

转载 作者:行者123 更新时间:2023-12-03 17:31:36 29 4
gpt4 key购买 nike

在几个月没有处理基础架构更改之后,我尝试在一台新机器上加载我们的 terragrunt 文件并遇到了几个错误,我找不到解决方案。

基本上看来,terraform.tfvars当有 *.auto.tfvars 时,文件(或任何 -var 文件)会被 terraform 忽略或 -var-file存在的选项。

我们使用分层 terragrunt 配置为不同的环境提供不同的凭据配置,这就是为什么有 account.tfvars文件,其中包含所有数据。

直到今年 8 月,一切都正常工作,所以也许有一个我在更新日志中没有发现的变化?

特定模块 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 中的命令文件夹,它确实有效,所以它不会自动加载。

有什么想法吗?

最佳答案

上述设置变量的机制可以任意组合一起使用。如果为同一个变量分配了多个值,Terraform 将使用它找到的最后一个值,覆盖之前的任何值。请注意,不能在单个源中为同一个变量分配多个值。
Terraform 按以下顺序加载变量,后面的源优先于前面的源:

  • 环境变量
  • terraform.tfvars 文件(如果存在)。
  • terraform.tfvars.json 文件(如果存在)。
  • 任何 *.auto.tfvars 或 *.auto.tfvars.json 文件,按文件名的词法顺序处理。
  • 命令行上的任何 -var 和 -var-file 选项,按提供的顺序排列。 (这包括由 Terraform Cloud 工作区设置的变量。)

  • 引用: https://www.terraform.io/docs/language/values/variables.html

    关于Terraform 在使用 -var 或 -var-file 时忽略 terraform.tfvars 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52930825/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com