#terraform #terraform-provider-aws
Вопрос:
Я пытаюсь создать модуль AWS VPC с использованием Terraform. Я делаю вторичный CIDR VPC дополнительной функцией модуля.
if secondary_cidr = true, then create subnets using the seocandary_cidr and network acls
Проблема, с которой я сталкиваюсь, связана со списками доступа к сети. При создании сетевых списков управления доступом с использованием terraform используется список идентификаторов подсети для привязки к NACL. Я хочу создать один сетевой ACL для связи первичных подсетей и вторичных подсетей только тогда, когда secondary_cidr=true
Смотрите код ниже:
cidr1_subnets = {
CIDR1_SUBNETS = [aws_subnet.app1-az1.id, aws_subnet.app1-az2.id, aws_subnet.app1-az3.id]
}
cidr2_subnets = {
exists = {
CIDR2_SUBNETS = [aws_subnet.app2-az1.id, aws_subnet.app2-az2.id, aws_subnet.app2-az3.id]
}
not_exists = {}
}
}
resource "aws_network_acl" "app" {
vpc_id = aws_vpc.main.id
egress {
protocol = "-1"
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
}
ingress {
protocol = "-1"
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
}
subnet_ids = merge(
local.cidr1_subnets,
local.cidr2_subnets[var.secondary_cidr == true ? true : false]
)
}```
Ответ №1:
Я думаю, что вам нужно следующее:
subnet_ids = var.secondary_cidr == true ? merge(local.cidr1_subnets, local.cidr2_subnets) : local.cidr1_subnets
Кстати, ваше locals
и использование слияния в любом случае потерпят неудачу, но, я думаю, это проблема другой проблемы.
Комментарии:
1. Вы правы — местные не сработали. Я решил просто поставить все после условия, но теперь Terraform жалуется на количество. Я попробовал использовать
aws_subnet.app2-az1[*]
иaws_subnet.app2-az1[count.index]
то, и другое, но безуспешно. Смотрите код ниже:2.
subnet_ids = var.secondary_cidr == 1 ? [aws_subnet.app-az1.id, aws_subnet.app-az2.id, aws_subnet.app-az3.id, aws_subnet.app2-az1[count.index].id, aws_subnet.app2-az2[count.index].id, aws_subnet.app2-az3[count.index].id] : [aws_subnet.app-az1.id, aws_subnet.app-az2.id, aws_subnet.app-az3.id]
3. @Дуг, я думаю, у тебя теперь новая проблема. Таким образом, будет рекомендован новый вопрос. Кроме того, если бы ответ на этот текущий вопрос был полезен, мы были бы признательны за его принятие.