【发布时间】:2021-08-25 19:39:15
【问题描述】:
我想使用以下内容为项目中的所有资源创建/管理通用标签。对于 common_var_tag,我希望仅在有任何其他更改时才应用它。因此,源被标记为 last-modified by who and when。
有什么办法吗?
提前致谢!
locals {
common_var_tags = {
ChangedBy = data.aws_caller_identity.current.arn
ChangedAt = timestamp()
}
common_fix_tags = {
Project. = "Project"
Owner = "Tiger Peng"
Team = "DevOps"
CreatedAt = "2021-06-08"
}
}
例如,现在,我必须注释掉“local.common_var_tags”,因为每次我在不更改任何属性的情况下运行terraform plan 或terrafomr apply 时,由于ChangedAt = timestamp() 而标记/更改了资源nginx .我想找到只有当其他属性发生变化时才会应用这个标签变化的方式。
resource "aws_instance" "nginx" {
count = 1
ami = var.nginx-ami
instance_type = var.nginx-instance-type
subnet_id = var.frontend-subnets[count.index]
key_name = aws_key_pair.key-pair.key_name
vpc_security_group_ids = [aws_security_group.nginx-sg.id]
root_block_device {
delete_on_termination = false
encrypted = true
volume_size = var.nginx-root-volume-size
volume_type = var.default-ebs-type
tags = merge(
local.common_fix_tags,
#local.common_var_tags,
map(
"Name", "${var.project}-${var.env}-nginx-${var.zones[count.index]}"
)
)
}
tags = merge(
local.common_fix_tags,
#local.common_var_tags,
map(
"Name", "${var.project}-${var.env}-nginx-${var.zones[count.index]}",
"Role", "Nginx"
)
)
}
【问题讨论】:
-
你有任何应用这些标签的例子吗?不清楚“仅应用了其他更改”是什么意思?改变什么,在哪里?
标签: terraform terraform-provider-aws