terraform后端字段可以作为变量访问吗?

时间:2019-07-10 00:55:54

标签: terraform

我想知道是否有可能检索模块中其他位置显式提供给后端配置的字段。

互联网上有很多人问是否可以使用变量来设置后端。我知道这是不可能的,因为terraform会执行操作的顺序-但我想做相反的事情。

一个容易解释的示例是,如果我想将后端状态存储桶/密钥传递给资源上的标签。我可以写两次状态键(一次在后端配置中,一次作为一个变量),但这违反了DRY,并且容易出错或充其量是烦人的。

我理解为什么在后端配置中不可能有变量,但是我无法想象任何技术上的限制来防止后端配置在模块的其他地方被引用。仍然我找不到任何方法,尝试将其放入后端配置的人们充斥着Google搜索它的尝试。也许有一种我找不到的简单语法,或者也许它不被支持,我可以考虑功能请求。

那么目前有一种方法可以做到吗?

2 个答案:

答案 0 :(得分:1)

如何将后端配置文件作为tfvars文件传递到Terraform Apply或Terraform Plan?那么您可以将其引用为变量。 您可以使用-var-file参数将多个tfvars文件传递到terraform。

例如 backend-config.tfvars

bucket = "test-bucket"
key = "test/terraform.tfstate"
...

和variables.tf

...
variable "bucket" {
 description="backend bucket"
}
variable "key" {
 description="backend key"
}

然后您可以启动Terraform

terraform init -backend-config=backend-config.tfvars

terraform plan -var-file={your varfile} -var-file=backend-config.tfvars

答案 1 :(得分:0)

您知道远程状态提供程序吗?您可以将其读回作为数据资源。 terraform doc就是这样。