Добавление тегов, созданных для дочерних ресурсов, созданных terraform - PullRequest
0 голосов
/ 01 ноября 2018

Terraform v0.11.9 + provider.aws v1.41.0

Я хочу знать, есть ли способ обновить ресурс, который создается не непосредственно в плане, а с помощью ресурса в плане. В этом примере создается управляемая Active Directory с использованием aws_directory_service_directory. Этот процесс создает группу безопасности, и я хочу добавить теги в группу безопасности. Вот фрагмент, который я использую для создания ресурса

resource "aws_directory_service_directory" "NewDS" {
  name       = "${local.DSFQDN}"
  password   = "${var.ADPassword}"
  size       = "Large"
  type       = "MicrosoftAD"
  short_name = "${local.DSShortName}"

  vpc_settings {
    vpc_id = "${aws_vpc.this.id}"
    subnet_ids = ["${aws_subnet.private.0.id}",
      "${aws_subnet.private.1.id}",
    ]
  }
 tags = "${merge(var.tags, var.ds_tags, map("Name", format("%s", local.VPCname)))}"
}

Я могу ссылаться на вновь созданную группу безопасности, используя

"${aws_directory_service_directory.NewDS.security_group_id}"

Я не могу использовать это для обновления ресурса. Я хочу добавить все теги, которые есть в каталоге, в систему безопасности, а также обновить тег Name. Я пытался использовать локальный поставщик exec, но результаты были непоследовательными, и получение карты тегов для команды без жесткого кодирования не помогло.

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Просто ударь это. Оказывается, теги распространяются из службы каталогов. Поэтому, если вы пометите свой каталог соответствующим образом, тег имени из вашей службы каталогов будет применен к группе безопасности.

0 голосов
/ 07 ноября 2018

Я переместил локального провайдера из ресурса службы каталогов в фиктивный ресурс.

resource "null_resource" "ManagedADTags" 
{
provisioner "local-exec" 
{
command = "aws --profile ${var.profile} --region ${var.region} ec2 create-tags -- 
resources ${aws_directory_service_directory.NewDS.security_group_id} --tags 
Key=Name,Value=${format("${local.security_group_prefix}-%s","ManagedAD")}"
} 
}

(command = - одна строка) Использование команды форматирования позволило мне отправить весь список тегов на ресурс. Terraform не «управляет» этим, но позволяет мне обновлять его как часть плана.

...