我将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
之类的错误消息,并且如果我尝试使用terraform 0.12,它将设法正确获取它。
这个未引用的资源值是terraform> v0.12专有的吗?
答案 0 :(得分:1)
是的。 Terraform 0.11要求所有引用看起来都像字符串插值(如您的第二个示例)。 Terraform 0.12添加了对first-class expressions的支持,该支持使您可以引用字符串之外的变量(如第一个示例)。
文档中还包括更新,更简洁的语法的示例:
For Each element In ie.document.getElementsByTagName("select")(0).getElementsByTagName("option")
If element.innerText = "262|Creator|0" Then
element.Selected = True
Else
ms = MsgBox(element.innerText)
End If
Next