terraform连接变量和字符串

时间:2018-07-17 01:47:13

标签: terraform

我需要将变量传递给数据构造。但是我不想用所有可能的迭代来构建数据对象。目的是查询AWS以获取资源ID。这是示例代码:

IO

1 个答案:

答案 0 :(得分:0)

您的代码几乎可以正常工作。在数据源stage-a中引用其ID时,您在aws_subnet上使用了错误的名称。

这是更新的代码。

variable "subnet" {}

data "aws_subnet" "subnet" {
  filter {
    name   = "state"
    values = ["available"]
  }

  filter {
    name   = "tag:Name"
    values = ["${var.subnet}"]
  }
}

output "data" {
  value = "${data.aws_subnet.subnet.id}"
}

由于未创建任何实际资源,因此可以自由运行terraform apply

$ TF_VAR_subnet="private" terraform apply
data.aws_subnet.subnet: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

data = subnet-21f5a847

唯一的问题是,如果没有匹配项,terraform将报告问题并在需要时停止应用更改。

$ TF_VAR_subnet="not_found" terraform apply
data.aws_subnet.subnet: Refreshing state...

Error: Error refreshing state: 1 error(s) occurred:

* data.aws_subnet.subnet: 1 error(s) occurred:

* data.aws_subnet.subnet: data.aws_subnet.subnet: no matching subnet found