Terraform附加标签

时间:2018-12-11 15:08:15

标签: tags terraform terraform-provider-aws

我创建了添加标签的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

1 个答案:

答案 0 :(得分:1)

这就是我的工作

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