首页 文章

添加为terraform创建的子资源创建的标签

提问于
浏览
0

Terraform v0.11.9 provider.aws v1.41.0

我想知道是否有办法更新计划中没有直接创建的资源,而是更新计划中的资源 . 该示例使用 aws_directory_service_directory 创建托管Active 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标记 . 我已经尝试过使用local-exec配置器,但是结果并不一致,并且在没有硬编码的情况下将标签映射到命令也没有用 .

谢谢

1 回答

  • 0

    我将本地提供程序移出目录服务资源并进入虚拟资源 .

    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 = 是单行)使用format命令允许我将整个标记列表发送到资源 . Terraform不会"manage"它,但它确实允许我将其更新为计划的一部分 .

相关问题