Как мне применить карту тегов к aws_autoscaling_group? - PullRequest
0 голосов
/ 10 декабря 2018

https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html#propagate_at_launch

Я делаю это, чтобы применить теги к ресурсам aws:

  tags = "${merge(
    local.common_tags, // reused in many resources
    map(
      "Name", "awesome-app-server",
      "Role", "server"
    )
  )}"

Но для вызова asg требуется поле пропагата_

У меня уже есть картатеги используются во многих других ресурсах, и я хотел бы повторно использовать их для ресурсов asg.Уверен, что я всегда буду устанавливать для аргумента пропагата значение true.Как я могу добавить это к каждому элементу карты и использовать его для поля tags?

1 Ответ

0 голосов
/ 10 декабря 2018

Я делаю это, используя нулевой ресурс, и беру его вывод в качестве тега, пример ниже -

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
    }
  }

}
...