Skip to content
113 changes: 76 additions & 37 deletions VMware/terraform/hcl/meanstack/meanstack-two-tiers.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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" {
Expand All @@ -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

Expand Down Expand Up @@ -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" {
Expand All @@ -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

Expand Down
35 changes: 35 additions & 0 deletions VMware/terraform/hcl/singleVM/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ provider "camc" {
version = "~> 0.2"
}

module "camtags" {
source = "../Modules/camtags"
}

##############################################################
# Define pattern variables
##############################################################
Expand Down Expand Up @@ -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" {
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down