【问题标题】:Terraform append tagsTerraform 附加标签
【发布时间】:2019-05-12 14:39:00
【问题描述】:

我创建 VPC 和添加标签的子网。

稍后,我创建附加自己的标签的 EKS 集群,如果我再次apply,标签将被覆盖。

我需要任何方法来读取当前标签,然后与我的自定义标签合并。问题是如果是第一次创建VPC资源我无法查询是否存在某些标签。

这是我的子网定义

resource "aws_subnet" "k8s" {
  count = "${var.create_vpc && length(var.k8s_subnets) > 0 ? length(var.k8s_subnets) : 0}"

  vpc_id            = "${local.vpc_id}"
  cidr_block        = "${var.k8s_subnets[count.index]}"
  availability_zone = "${element(var.azs, count.index)}"

  tags = "${merge(map("Name", format("subnet-%s-${var.k8s_subnet_suffix}-%s", var.name, element(var.azs, count.index))), var.tags, var.k8s_subnet_tags)}"
}

这是 EKS 添加的标签:

kubernetes.io/cluster/eks-cluster : shared

我受困于这种……先有鸡还是先有蛋?有什么想法或建议吗?

-- 已编辑

类似 self.tags 的东西可能是解决方案,但不幸的是这是不可能的:

self.ATTRIBUTE 语法仅在供应商中允许且有效。

它显示一个错误:

Error: resource 'aws_subnet.k8s' config: cannot contain self-reference self.tags

【问题讨论】:

  • 如果 EKS 添加的标签是确定性的,我会简单地将其包含在 Terraform 中。
  • 我正在为新项目创建某种基础设施引导程序。我已经完全分离了模块(实际上每个模块都在不同的 git 存储库中),所以我创建了所有必要的网络基础设施,也许一个月后我创建了 EKS 集群,所以我以前甚至不知道集群的名称。这就是附加标签的可能性很大的原因:)

标签: tags terraform terraform-provider-aws


【解决方案1】:

这就是我的工作:

  1. 我在 env.sh 中定义了通用标签,它包裹了 terraform
  2. 创建另一个组件时,我这样做:tags = "${merge(var.default_tags, map("Name", format("%s-Jenkins-ELB", var.env)))}"李>
  3. 您可以将 VPC 标签写入 SSM 参数存储,稍后检索它们以供 EKS 集群使用。

【讨论】:

  • 这不是附加标签,但值得调查。我正在考虑在 k8s 模块中添加子网和路由创建,这是有道理的,但我对 VPC 的标签有同样的问题,我无法在 k8s 模块中创建 VPC
  • 目标是让 SSM 成为您的记录标签列表,因此您可以读取、附加、更新它,如果您从 SSM 传递标签列表,您的资源将自动更新。跨度>
猜你喜欢
  • 1970-01-01
  • 2020-04-26
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多