我成功地使用了 terratest,但是自从切换到远程后端(详细信息在单独的backend.hcl
文件中定义)后,我遇到了麻烦。
情况:我的main.tf
开始是这样的:
terraform {
required_version = "~> 0.14.0"
backend "remote" {}
}
我的backend.hcl
:
workspaces { name = "foobar" }
hostname = "app.terraform.io"
organization = "ACME"
然后在使用 terraform 时,我喜欢terraform init -backend-config=./backend.hcl
. 到目前为止,一切都很好。使用 terratest 时,它现在会抱怨关于organization
未定义的其他错误。这似乎是合理的,因为organization
在main.tf
.
一种解决方法是包含backend.hcl
in的内容main.tf
,但这不适合我们的架构,它只需要进行编辑main.tf
以进行测试。
有没有办法告诉 terratest 包括backend.hcl
何时 terraform 初始化?
编辑1:我看到有一种方法可以将后端信息添加到terraformOptions
,但是我无法正确格式化这些:
BackendConfig: map[string]interface{}{
"organization": "ACME",
"hostname": "app.terraform.io",
"workspaces": "{ name = "foobar" }",
},
如果我能让它工作,这将提供一种解决方法,因为我可以添加一些代码来读取backend.hcl
和注入信息,但是工作区格式不正确,我对它的外观有点迷茫。
编辑 2:好的,现在我发现编辑 1 中提到的解决方法不起作用,因为工作区是一个块值,目前不支持。该问题自 2019 年以来一直开放...... https://github.com/hashicorp/terraform/issues/21830。
因此,如果 terratest 支持文件中的后端配置,那将非常有帮助。