Terraform: инфраструктура на уровне кода | страница 102
Например, если вы хотите предоставить в качестве выходной переменной ARN одного из пользователей IAM, нужно сделать следующее:
output "neo_arn" {
value = aws_iam_user.example[0].arn
description = "The ARN for user Neo"
}
Если вам нужны ARN всех пользователей IAM, вы должны указать символ * вместо индекса:
output "all_arns" {
value = aws_iam_user.example[*].arn
description = "The ARNs for all users"
}
Если выполнить команду apply, вывод neo_arn будет содержать только ARN пользователя Neo, тогда как all_arns выведет список всех ARN:
$ terraform apply
(...)
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
Outputs:
neo_arn = arn:aws:iam::123456789012:user/neo
all_arns = [
"arn:aws:iam::123456789012:user/neo",
"arn:aws:iam::123456789012:user/trinity",
"arn:aws:iam::123456789012:user/morpheus",
]
К сожалению, у параметра count есть два ограничения, которые делают его куда менее полезным. Во-первых, с помощью count можно пройтись по всему ресурсу, но при этом нельзя перебирать его вложенные блоки. Вложенный блок — это аргумент, который устанавливается внутри ресурса в следующем формате:
resource "xxx" "yyy" {
[CONFIG...]
}
}
NAME — это имя вложенного блока (например, tag), а CONFIG состоит из одного или нескольких аргументов, предназначенных специально для него (вроде key и value). Посмотрите, как устанавливаются теги в ресурсе aws_autoscaling_group:
resource "aws_autoscaling_group" "example" {
launch_configuration = aws_launch_configuration.example.name
vpc_zone_identifier = data.aws_subnet_ids.default.ids
target_group_arns = [aws_lb_target_group.asg.arn]
health_check_type = "ELB"
min_size = var.min_size
max_size = var.max_size
tag {
key = "Name"
value = var.cluster_name
propagate_at_launch = true
}
}
Каждый тег требует создания нового вложенного блока со значениями для key, value и propagate_at_launch. В предыдущем листинге вручную указан единственный тег, но можно разрешить пользователям передавать собственные. У вас может появиться соблазн воспользоваться параметром count для циклического перебора этих тегов и генерации динамических вложенных блоков tag, но, к сожалению, применение count внутри вложенного блока не поддерживается.
Второе ограничение параметра count даст о себе знать, когда вы попытаетесь его изменить. Рассмотрим созданный ранее список пользователей IAM: