如何使用terraform添加多个现有的vmware标签



这是我目前使用它们的方式:

# terraform.tfvars
vsphere_tag_name ="Name"
vsphere_tag_category ="Category"
# var.tf
variable "vsphere_tag_name" {
type        = string
description = "Tag name for the vSphere virtual machines"
}
variable "vsphere_tag_category" {
type        = string
description = "Tag category for the vSphere virtual machines"
}
# main.tf data
data "vsphere_tag_category" "category" {
name = "${var.vsphere_tag_category}"
}
data "vsphere_tag" "tag" {
name        = "${var.vsphere_tag_name}"
category_id = "${data.vsphere_tag_category.category.id}"
}
# main.tf resource 
tags        = ["${data.vsphere_tag.tag.id}"]

对于一个标签来说非常好,但如何给出多个现有标签?

我不确定确切的用例是什么,特别是标记数据源所需的参数相当严格,但这是可以做到的。

的例子:

# terraform.tfvars
vsphere_tag_name = ["Name1", "Name2", "Name3"]
vsphere_tag_category = "Category"
# var.tf
variable "vsphere_tag_name" {
type        = list
description = "List of tag names for the vSphere virtual machines"
}
variable "vsphere_tag_category" {
type        = string
description = "Tag category for the vSphere virtual machines"
}
# main.tf data
data "vsphere_tag_category" "category" {
name = "${var.vsphere_tag_category}"
}
data "vsphere_tag" "tag" {
for_each = var.vsphere_tag_name
name        = "${each.value}"
category_id = "${data.vsphere_tag_category.category.id}"
}
# main.tf resource 
tags        = ["${data.vsphere_tag.tag[0].id}", "${data.vsphere_tag.tag[1].id}", "${data.vsphere_tag.tag[2].id}"]

然后,如果你必须切换vSphere标签类别,就会有另一个复杂的层次。

感谢大家的帮助,这里是答案

# terraform.tfvars
tags = {  
TagCategory1             = "TagName1"
TagCategory2             = "TagName2"
}
# var.tf
variable "tags" {
type        = map(any)
}
variable "tag_ids" {
type        = list(any)
}
# main.tf data
data "vsphere_tag_category" "category" {
count      = length(var.tags)     
name       = keys(var.tags)[count.index]
}
data "vsphere_tag" "tag" {
count       = length(var.tags)
name        = var.tags[keys(var.tags)[count.index]]
category_id = data.vsphere_tag_category.category[count.index].id
}
# main.tf resource 
tags          = var.tag_ids:data.vsphere_tag.tag[*].id 

最新更新