tags - Terraform 附加标签
问题描述
我创建 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
解决方案
这就是我所做的:
- 我在 env.sh 中定义了包含 terraform 的通用标签
- 创建另一个组件时,我这样做: tags = "${merge(var.default_tags, map("Name", format("%s-Jenkins-ELB", var.env)))}"
- 您可以将 VPC 标签写入 SSM 参数存储并稍后检索它们以供 EKS 集群使用。
推荐阅读
- node.js - 通过Nodejs包在Excel文件中执行VBA脚本
- python - 使用dfs查找图像中的连接组件时出现递归错误
- spring - Spring Boot @Cachable - 如何在运行时找出过期日期时间?
- javascript - 显示尺寸太小时内容重叠
- prometheus - Prometheus 指标在被删除后不会消失
- python - 如何使用 Visual Studio Code 进入依赖代码?
- linux - 内核、内核线程和用户线程之间的区别
- android - 如何在android中设置sqlite数据库的数据大小限制?
- sql - 如何在 RDLC ReportViewer 中显示多行?
- c++ - 矢量可以双向调整大小吗?