У меня сейчас есть какая-то терраформа, которая выглядит так:
resource "aws_autoscaling_group" "my_asg" {
...
tag {
key = "ManagedBy"
value = "Terraform"
propagate_at_launch = true
}
}
Проблема в том, что этот блок кода довольно большой, и множество тегов являются общими для нескольких ASG, поэтому, чтобы попытаться сократить его до чего-то более управляемого и уменьшить дублирование, я хочу сделать что-то подобное с общими тегами :
resource "aws_autoscaling_group" "my_asg" {
...
tag = "${var.managed_by_tag}"
}
variable "managed_by_tag" {
type = "map"
default = {
key = "ManagedBy"
value = "Terraform"
propagate_at_launch = true
}
}
К сожалению, когда я запускаю terraform apply
, я получаю следующую ошибку:
Error: Error loading C:\path\to\file.tf: Error reading config for aws_autoscaling_group[my_asg]: At 32:9: unknown slice type: *ast.LiteralType
Из этой ошибки видно, что проблема в том, что она пытается поместить предмет неправильного типа - в данном случае карту - в место, где оно не принадлежит. Но я запутался в том, что следующее работает корректно и подразумевает (по крайней мере для меня, как нуб-терраформа), что карта должна быть в порядке:
resource "aws_autoscaling_group" "my_asg" {
...
tag = {
key = "ManagedBy"
value = "Terraform"
propagate_at_launch = true
}
}
Итак, мои вопросы:
- Есть ли способ извлечь эти теги в переменные?
- Почему мой подход выше не работает?