#amazon-web-services #terraform #terraform-provider-aws
#amazon-web-services #terraform #terraform-provider-aws
Вопрос:
Я создаю несколько ресурсов, используя count в terraform. например:
resource "aws_subnet" "rSubnetMGMT" {
count = length(var.vletter)
availability_zone = "${var.vRegion}${var.vletter[count.index]}"
vpc_id = aws_vpc.rVPCMGMT.id
cidr_block = var.vSubnetMGMTCIDR
map_public_ip_on_launch = "true"
tags = {
Name = "${var.vWorkloadShortCode}-mgmt-MGMT- ${var.vRegion}${var.vletter[count.index]}"
SubnetType = "MGMT"
}
}
здесь vletter = [«a», «b»,»c»]
таким образом, это создает 3 подсети на зону доступности
, теперь я хочу создать «aws_autoscaling_group», для которого требуется список идентификаторов подсети, которые я создал
resource "aws_autoscaling_group" "rAutoScalingGroup" {
count = lenght(var.vletter)
max_size = var.vMaxNoofInstances
min_size = var.vMinNoofInstances
launch_configuration = aws_launch_configuration.rLaunchConfiguration.name
vpc_zone_identifier = [aws_subnet.rSubnetMGMT[count.index].id ]
metrics_granularity = 1Minute
enabled_metrics = [GroupInServiceInstances]
load_balancers = aws_elb.rLoadBalancer.name
tag {
Name = "${var.vInstanceShortNameBAS}-asg"
}
}
но если я использую count при создании ресурса (aws_autoscaling_group), он создаст несколько ресурсов, т.Е. 3 Разные группы автоматического масштабирования для каждой подсети, но здесь мне нужны только все идентификаторы подсети, которые я создал ранее. Как я могу добиться этого, не создавая несколько ресурсов?
Ответ №1:
Вы можете использовать оператор splat: aws_subnet.rSubnetMGMT.*.id
который будет преобразован в список идентификаторов созданных подсетей.