【发布时间】: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