Я делаю это, используя нулевой ресурс, и беру его вывод в качестве тега, пример ниже -
data "null_data_source" "tags" {
count = "${length(keys(var.tags))}"
inputs = {
key = "${element(keys(var.tags), count.index)}"
value = "${element(values(var.tags), count.index)}"
propagate_at_launch = true
}
}
resource "aws_autoscaling_group" "asg_ec2" {
..........
..........
lifecycle {
create_before_destroy = true
}
tags = ["${data.null_data_source.tags.*.outputs}"]
tags = [
{
key = "Name"
value = "awesome-app-server"
propagate_at_launch = true
},
{
key = "Role"
value = "server"
propagate_at_launch = true
}
]
}
Вы можете заменить var.tags
на local.common_tags
.
ВАЖНОЕ ОБНОВЛЕНИЕ для Terraform 0.12+.Теперь он поддерживает динамические вложенные блоки и для каждого.Если у вас версия 0.12+, используйте следующий код -
resource "aws_autoscaling_group" "asg_ec2" {
..........
..........
lifecycle {
create_before_destroy = true
}
tag {
key = "Name"
value = "awesome-app-server"
propagate_at_launch = true
}
tag {
key = "Role"
value = "server"
propagate_at_launch = true
}
dynamic "tag" {
for_each = var.tags
content {
key = tag.key
value = tag.value
propagate_at_launch = true
}
}
}