Terraform 0.11

时间:2019-09-07 15:12:32

标签: terraform terraform-provider-aws

我将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专有的吗?

1 个答案:

答案 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