gpt4 book ai didi

带有 "count"的 Terraform v0.13 条件资源

转载 作者:行者123 更新时间:2023-12-04 07:39:03 25 4
gpt4 key购买 nike

根据评估并用于影响资源计数的变量创建条件资源时遇到问题。问题是有条件创建的资源随后会在代码的其他地方被引用。例如,这个安全组:

resource "aws_security_group" "mygroup" {
count = var.deploy_mgroup ? 1 : 0
name = "mygroup-sg"
vpc_id = aws_vpc.main.id

ingress {
description = "Allow something."
from_port = 8111
to_port = 8111
protocol = "tcp"
security_groups = [aws_security_group.anothergroup.id]

egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
然后这在另一个组中被引用:
resource "aws_security_group" "rds" {
name = "rds-sg"
vpc_id = aws_vpc.main.id

ingress {
description = "Allow PGSQL"
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = [var.ingress_src_ip]
security_groups = [aws_security_group.mygroup[0].id,aws_security_group.anothergroup.id]
}

egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
所以在这种情况下,我认识到使用 count 的资源必须作为列表引用,如果变量 deploy_mgroup 可以正常工作。设置为 true .如果设置为false,那么有count的资源显然永远不会被创建,所以第二组引用的列表 aws_security_group.mygroup[0].id是空的,这给我带来了错误。
我不确定我需要在这里做什么,也许这只是一种糟糕的方法,我应该使用更好的方法?我有一段时间没有使用 Terraform,我错过了几个版本。
任何指针将不胜感激!
谢谢

最佳答案

我匆忙阅读了您的帖子,我没有时间尝试我要建议的解决方案。为此:对不起! :)
我建议你改变:

security_groups = [aws_security_group.mygroup[0].id,aws_security_group.anothergroup.id]
security_groups = var.deploy_mgroup ? [aws_security_group.mygroup[0].id,aws_security_group.anothergroup.id] : null

勘误表:
我建议你改变:
security_groups = [aws_security_group.mygroup[0].id,aws_security_group.anothergroup.id]
security_groups = 
var.deploy_mgroup
? [aws_security_group.mygroup[0].id, aws_security_group.anothergroup.id]
: [aws_security_group.anothergroup.id]

关于带有 "count"的 Terraform v0.13 条件资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67583378/

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