Skip to content

Commit b547b1c

Browse files
Merge branch 'Terraform-VMWare-Modules:master' into master
2 parents 80f6c48 + 33419b6 commit b547b1c

File tree

7 files changed

+92
-46
lines changed

7 files changed

+92
-46
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ module "example-server-windowsvm-advanced" {
125125
}
126126
127127
output "vmnames" {
128-
value = "${module.example-server-windowsvm-advanced.Windows-VM}"
128+
value = module.example-server-windowsvm-advanced.VM
129129
}
130130
131131
output "vmnameswip" {
132-
value = "${module.example-server-windowsvm-advanced.Windows-ip}"
132+
value = module.example-server-windowsvm-advanced.ip
133133
}
134134
```
135135

main.tf

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,18 @@ resource "vsphere_virtual_machine" "vm" {
8989
guest_id = data.vsphere_virtual_machine.template.guest_id
9090
scsi_bus_sharing = var.scsi_bus_sharing
9191
scsi_type = var.scsi_type != "" ? var.scsi_type : data.vsphere_virtual_machine.template.scsi_type
92-
scsi_controller_count = max(max(0, flatten([
93-
for item in values(var.data_disk) : [
94-
for elem, val in item :
95-
elem == "data_disk_scsi_controller" ? val : 0
96-
]
97-
])...) + 1, var.scsi_controller)
92+
scsi_controller_count = max(
93+
max(0,flatten([
94+
for item in values(var.data_disk) : [
95+
for elem, val in item :
96+
elem == "data_disk_scsi_controller" ? val : 0
97+
]])...) + 1,
98+
ceil((max(0,flatten([
99+
for item in values(var.data_disk) : [
100+
for elem, val in item :
101+
elem == "unit_number" ? val : 0
102+
] ])...) + 1) / 15),
103+
var.scsi_controller)
98104
wait_for_guest_net_routable = var.wait_for_guest_net_routable
99105
wait_for_guest_ip_timeout = var.wait_for_guest_ip_timeout
100106
wait_for_guest_net_timeout = var.wait_for_guest_net_timeout
@@ -132,7 +138,27 @@ resource "vsphere_virtual_machine" "vm" {
132138
content {
133139
label = terraform_disks.key
134140
size = lookup(terraform_disks.value, "size_gb", null)
135-
unit_number = lookup(terraform_disks.value, "data_disk_scsi_controller", 0) ? terraform_disks.value.data_disk_scsi_controller * 15 + index(keys(var.data_disk), terraform_disks.key) + (var.scsi_controller == tonumber(terraform_disks.value["data_disk_scsi_controller"]) ? local.template_disk_count : 0) : index(keys(var.data_disk), terraform_disks.key) + local.template_disk_count
141+
unit_number = (
142+
lookup(
143+
terraform_disks.value,
144+
"unit_number",
145+
-1
146+
) < 0 ? (
147+
lookup(
148+
terraform_disks.value,
149+
"data_disk_scsi_controller",
150+
0
151+
) > 0 ? (
152+
(terraform_disks.value.data_disk_scsi_controller * 15) +
153+
index(keys(var.data_disk), terraform_disks.key) +
154+
(var.scsi_controller == tonumber(terraform_disks.value["data_disk_scsi_controller"]) ? local.template_disk_count : 0)
155+
) : (
156+
index(keys(var.data_disk), terraform_disks.key) + local.template_disk_count
157+
)
158+
) : (
159+
tonumber(terraform_disks.value["unit_number"])
160+
)
161+
)
136162
thin_provisioned = lookup(terraform_disks.value, "thin_provisioned", "true")
137163
eagerly_scrub = lookup(terraform_disks.value, "eagerly_scrub", "false")
138164
datastore_id = lookup(terraform_disks.value, "datastore_id", null)

tests/sanity/.terraform.lock.hcl

Lines changed: 13 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/sanity/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,19 @@ vm = {
3939
data_disk_scsi_controller = 1,
4040
datastore_id = "datastore-90679"
4141
}
42+
disk4 = {
43+
size_gb = 5,
44+
thin_provisioned = true,
45+
unit_number = 30,
46+
datastore_id = "datastore-90679"
47+
}
4248
}
4349
network = {
4450
"VM Port Group" = ["10.13.13.2", ""], # To use DHCP create Empty list for each instance
4551
"VM Port Group" = ["", ""]
4652
}
53+
tags = {}
54+
annotation = null
4755
},
4856
windowsvm = {
4957
vmname = "example-server-windows",
@@ -62,6 +70,8 @@ vm = {
6270
"VM Port Group" = ["", ""]
6371
}
6472
}
73+
tags = {}
74+
annotation = null
6575
}
6676
```
6777

tests/sanity/apply.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
terraform init
2+
terraform fmt
3+
terraform validate
4+
terraform apply -var-file="private.tfvars"

tests/sanity/cleanup.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
terraform destroy -var-file=private.tfvars
2+
rm terraform.tfstate terraform.tfstate.backup .terraform.lock.hcl
3+
rm -rf .terraform

tests/sanity/main.tf

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ variable "env" {
1919
default = "dev"
2020
}
2121

22-
data "vsphere_storage_policy" "this" {
23-
name = "Test"
24-
}
25-
26-
output "disk_id" {
27-
value = data.vsphere_storage_policy.this.id
28-
}
29-
3022
variable "vm" {
3123
type = map(object({
3224
vmname = string
@@ -46,22 +38,32 @@ variable "vm" {
4638
}
4739

4840
module "example-server-basic" {
49-
source = "../../"
50-
for_each = var.vm
51-
vmnameformat = "%03d${var.env}"
52-
template_storage_policy_id = [data.vsphere_storage_policy.this.id]
53-
tag_depends_on = [vsphere_tag.tag.id]
54-
tags = each.value.tags
55-
vmtemp = each.value.vmtemp
56-
is_windows_image = each.value.is_windows_image
57-
instances = each.value.instances
58-
vmname = each.value.vmname
59-
vmrp = each.value.vmrp
60-
vmfolder = each.value.vmfolder
61-
network = each.value.network
62-
vmgateway = each.value.vmgateway
63-
dc = each.value.dc
64-
datastore = each.value.datastore
65-
data_disk = each.value.data_disk
41+
source = "../../"
42+
for_each = var.vm
43+
vmnameformat = "%03d${var.env}"
44+
tag_depends_on = [vsphere_tag.tag.id]
45+
tags = each.value.tags
46+
vmtemp = each.value.vmtemp
47+
is_windows_image = each.value.is_windows_image
48+
instances = each.value.instances
49+
vmname = each.value.vmname
50+
vmrp = each.value.vmrp
51+
vmfolder = each.value.vmfolder
52+
network = each.value.network
53+
vmgateway = each.value.vmgateway
54+
dc = each.value.dc
55+
datastore = each.value.datastore
56+
data_disk = each.value.data_disk
6657
}
6758

59+
output "DC_ID" {
60+
value = tomap({
61+
for k, i in module.example-server-basic : k => i.DC_ID
62+
})
63+
}
64+
65+
output "VM" {
66+
value = tomap({
67+
for k, i in module.example-server-basic : k => i.VM
68+
})
69+
}

0 commit comments

Comments
 (0)