我使用terraform 0.11作为terraform-aws-provider的自定义模块实现。在模块内部,有许多未引用的资源值赋值,这让我感到困惑,因为它们不起作用。
这是我正在使用的示例模块代码
resource "aws_iam_policy" "example" {
name = example_policy
policy = data.aws_iam_policy_document.example.json
}在官方的terraform文档中,它是围绕要成为的值进行插值而给出的
resource "aws_iam_policy" "example" {
name = "example_policy"
policy = "${data.aws_iam_policy_document.example.json}"
}来自:https://www.terraform.io/docs/providers/aws/d/iam_policy_document.html
当我尝试使用terraform get时,出现了以下错误消息:Unknown token: 39:24 IDENT data.aws_iam_policy_document.example.json,而当我尝试使用Terraform0.12时,它成功地正确获取了它。
此未引用的资源值是terraform > v0.12独有的吗?
发布于 2019-09-08 00:56:35
是。Terraform 0.11要求所有引用看起来都像字符串插值(就像你的第二个例子一样)。Terraform0.12增加了对first-class expressions的支持,它允许你引用字符串之外的变量(就像你的第一个例子一样)。
这些文档还包括一个更新、更清晰的语法示例:
# Old 0.11 example
tags = "${merge(map("Name", "example"), var.common_tags)}"
# Updated 0.12 example
tags = merge({ Name = "example" }, var.common_tags)https://stackoverflow.com/questions/57834955
复制相似问题