diff --git a/VMware/terraform/hcl/meanstack/meanstack-two-tiers.tf b/VMware/terraform/hcl/meanstack/meanstack-two-tiers.tf index 92507774..f76f0f61 100644 --- a/VMware/terraform/hcl/meanstack/meanstack-two-tiers.tf +++ b/VMware/terraform/hcl/meanstack/meanstack-two-tiers.tf @@ -249,26 +249,64 @@ variable "mongodb_vm_root_disk_size" { description = "Size of template disk volume. Should be equal to template's disk size" default = "25" } - -resource "vsphere_tag_category" "ibm_terraform_automation_mongodb_vm_category" { - count = length(module.camtags.tagslist) > 0 ? 1 : 0 - name = format("%s %s", "IBM Terraform Automation Tags for", var.mongodb_vm_name) - description = "Category for IBM Terraform Automation" - cardinality = "MULTIPLE" - - associable_types = [ - "VirtualMachine", - "Datastore", - "Network", - ] + +#List of tags that will be added from service +variable "service_tag_includes" { + type = list + default = ["environment"] } -resource "vsphere_tag" "ibm_terraform_automation_mongodb_vm_tags" { - count = length(module.camtags.tagslist) - name = element(module.camtags.tagslist, count.index) - category_id = element(vsphere_tag_category.ibm_terraform_automation_mongodb_vm_category.*.id, 0) - description = "Managed by IBM Terraform Automation" -} +#Filter tags passed by service. +locals { + + taglist = [ + for cat in var.service_tag_includes : { + for k, v in module.camtags.tagsmap : k => v + if k == cat + } + ] + + tagmap = {for v in local.taglist : keys(v)[0] => values(v)[0]} +} + + +data "vsphere_tag_category" "category" { + count = length(local.tagmap) + name = keys(local.tagmap)[count.index] +# cardinality = "MULTIPLE" +# description = "Category for IBM Terraform Automation" + +# associable_types = [ +# "VirtualMachine", +# "Datastore", +# "Network", +# ] +} +data "vsphere_tag" "tag" { + count = length(local.tagmap) + name = values(local.tagmap)[count.index] + category_id = data.vsphere_tag_category.category[count.index].id +} + +# resource "vsphere_tag_category" "ibm_terraform_automation_mongodb_vm_category" { +# count = length(module.camtags.tagslist) > 0 ? 1 : 0 +# name = format("%s %s", "IBM Terraform Automation Tags for", var.mongodb_vm_name) +# description = "Category for IBM Terraform Automation" +# cardinality = "MULTIPLE" + +# associable_types = [ +# "VirtualMachine", +# "Datastore", +# "Network", +# ] +# } + +# resource "vsphere_tag" "ibm_terraform_automation_mongodb_vm_tags" { +# count = length(module.camtags.tagslist) +# name = element(module.camtags.tagslist, count.index) +# category_id = element(vsphere_tag_category.ibm_terraform_automation_mongodb_vm_category.*.id, 0) +# description = "Managed by IBM Terraform Automation" +# } # vsphere vm resource "vsphere_virtual_machine" "mongodb_vm" { @@ -280,7 +318,7 @@ resource "vsphere_virtual_machine" "mongodb_vm" { datastore_id = data.vsphere_datastore.mongodb_vm_datastore.id guest_id = data.vsphere_virtual_machine.mongodb_vm_template.guest_id scsi_type = data.vsphere_virtual_machine.mongodb_vm_template.scsi_type - tags = vsphere_tag.ibm_terraform_automation_mongodb_vm_tags[*].id + tags = data.vsphere_tag.tag.*.id clone { template_uuid = data.vsphere_virtual_machine.mongodb_vm_template.id @@ -578,25 +616,26 @@ variable "nodejs_vm_root_disk_size" { default = "25" } -resource "vsphere_tag_category" "ibm_terraform_automation_nodejs_vm_category" { - count = length(module.camtags.tagslist) > 0 ? 1 : 0 - name = format("%s %s", "IBM Terraform Automation Tags for", var.nodejs_vm_name) - description = "Category for IBM Terraform Automation" - cardinality = "MULTIPLE" + +# resource "vsphere_tag_category" "ibm_terraform_automation_nodejs_vm_category" { +# count = length(module.camtags.tagslist) > 0 ? 1 : 0 +# name = format("%s %s", "IBM Terraform Automation Tags for", var.nodejs_vm_name) +# description = "Category for IBM Terraform Automation" +# cardinality = "MULTIPLE" - associable_types = [ - "VirtualMachine", - "Datastore", - "Network", - ] -} +# associable_types = [ +# "VirtualMachine", +# "Datastore", +# "Network", +# ] +# } -resource "vsphere_tag" "ibm_terraform_automation_nodejs_vm_tags" { - count = length(module.camtags.tagslist) - name = element(module.camtags.tagslist, count.index) - category_id = element(vsphere_tag_category.ibm_terraform_automation_nodejs_vm_category.*.id, 0) - description = "Managed by IBM Terraform Automation" -} +# resource "vsphere_tag" "ibm_terraform_automation_nodejs_vm_tags" { +# count = length(module.camtags.tagslist) +# name = element(module.camtags.tagslist, count.index) +# category_id = element(vsphere_tag_category.ibm_terraform_automation_nodejs_vm_category.*.id, 0) +# description = "Managed by IBM Terraform Automation" +# } # vsphere vm resource "vsphere_virtual_machine" "nodejs_vm" { @@ -608,7 +647,7 @@ resource "vsphere_virtual_machine" "nodejs_vm" { datastore_id = data.vsphere_datastore.nodejs_vm_datastore.id guest_id = data.vsphere_virtual_machine.nodejs_vm_template.guest_id scsi_type = data.vsphere_virtual_machine.nodejs_vm_template.scsi_type - tags = vsphere_tag.ibm_terraform_automation_nodejs_vm_tags[*].id + tags = data.vsphere_tag.tag.*.id clone { template_uuid = data.vsphere_virtual_machine.nodejs_vm_template.id diff --git a/VMware/terraform/hcl/singleVM/main.tf b/VMware/terraform/hcl/singleVM/main.tf index 0cbca67c..8e22660f 100644 --- a/VMware/terraform/hcl/singleVM/main.tf +++ b/VMware/terraform/hcl/singleVM/main.tf @@ -20,6 +20,10 @@ provider "camc" { version = "~> 0.2" } +module "camtags" { + source = "../Modules/camtags" +} + ############################################################## # Define pattern variables ############################################################## @@ -155,6 +159,36 @@ variable "vm_1_root_disk_size" { variable "vm_1-image" { description = "Operating system image id / template that should be used when creating the virtual image" } +#List of tags that will be added from service +variable "service_tag_includes" { + type = list + default = ["environment"] +} + +#Filter tags passed by service. +locals { + + taglist = [ + for cat in var.service_tag_includes : { + for k, v in module.camtags.tagsmap : k => v + if k == cat + } + ] + +tagmap = length(module.camtags.tagslist)==0 ? {} : {for v in local.taglist : keys(v)[0] => values(v)[0]} +} + + +data "vsphere_tag_category" "category" { + count = length(local.tagmap) > 0 ? 1 : 0 + name = keys(local.tagmap)[count.index] +} + +data "vsphere_tag" "tag" { + count = length(local.tagmap) > 0 ? 1 : 0 + name = values(local.tagmap)[count.index] + category_id = data.vsphere_tag_category.category[count.index].id +} # vsphere vm resource "vsphere_virtual_machine" "vm_1" { @@ -166,6 +200,7 @@ resource "vsphere_virtual_machine" "vm_1" { datastore_id = data.vsphere_datastore.vm_1_datastore.id guest_id = data.vsphere_virtual_machine.vm_1_template.guest_id scsi_type = data.vsphere_virtual_machine.vm_1_template.scsi_type + tags = data.vsphere_tag.tag.*.id clone { template_uuid = data.vsphere_virtual_machine.vm_1_template.id diff --git a/VMware/terraform/hcl/singleVMWithPredefinedCategory/main.tf b/VMware/terraform/hcl/singleVMWithPredefinedCategory/main.tf index 556679cc..fec21c0d 100644 --- a/VMware/terraform/hcl/singleVMWithPredefinedCategory/main.tf +++ b/VMware/terraform/hcl/singleVMWithPredefinedCategory/main.tf @@ -30,7 +30,7 @@ locals { #List of tags that will be added from service variable "service_tag_includes" { type = list - default = ["environment", "request_user"] + default = ["environment"] } #Filter tags passed by service.