gpt4 book ai didi

terraform - 如何从另一个资源中的计数资源访问属性?

转载 作者:行者123 更新时间:2023-12-04 13:18:33 26 4
gpt4 key购买 nike

我正在使用 Terraform 编写 AWS 构建脚本。我正在跨多个可用区启动多个实例,在本例中为 2:

resource "aws_instance" "myinstance" {
count = 2
ami = "${var.myamiid}"
instance_type = "${var.instancetype}"
availability_zone = "${data.aws_availability_zones.all.names[count.index]}"
# other details omitted for brevity
}

我现在需要为这些实例分配一个弹性 IP,以便我可以在将来重建这些实例而不更改它们的 IP 地址。下面显示了我想做的事情:
resource "aws_eip" "elastic_ips" {
count = 2
instance = "${aws_instance.myinstance[count.index].id}"
vpc = true
}

但是这个错误:

expected "}" but found "."



我也试过使用 lookup :
instance = "${lookup(aws_instance.sbc, count.index).id}"

但这失败并出现相同的错误。

如何将弹性 IP 附加到这些实例?

最佳答案

请通过terraform interpolation - element list index

element(list, index) - Returns a single element from a list at the given index. If the index is greater than the number of elements, this function will wrap using a standard mod algorithm. This function only works on flat lists. Examples:


element(aws_subnet.foo.*.id, count.index)

所以在你的情况下,代码将是:
instance = "${element(aws_instance.myinstance.*.id, count.index}"

关于terraform - 如何从另一个资源中的计数资源访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com