这是我目前使用它们的方式:
# 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