Skip to content

Commit e2afa29

Browse files
committed
Add disk_storage_policy_id
Signed-off-by: Stéphane Este-Gracias <[email protected]>
1 parent 5f9ae54 commit e2afa29

File tree

2 files changed

+35
-24
lines changed

2 files changed

+35
-24
lines changed

main.tf

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,27 @@ resource "vsphere_virtual_machine" "Linux" {
109109
for_each = data.vsphere_virtual_machine.template.disks
110110
iterator = template_disks
111111
content {
112-
label = length(var.disk_label) > 0 ? var.disk_label[template_disks.key] : "disk${template_disks.key}"
113-
size = var.disk_size_gb != null ? var.disk_size_gb[template_disks.key] : data.vsphere_virtual_machine.template.disks[template_disks.key].size
114-
unit_number = var.scsi_controller != null ? var.scsi_controller * 15 + template_disks.key : template_disks.key
115-
thin_provisioned = data.vsphere_virtual_machine.template.disks[template_disks.key].thin_provisioned
116-
eagerly_scrub = data.vsphere_virtual_machine.template.disks[template_disks.key].eagerly_scrub
117-
datastore_id = var.disk_datastore != "" ? data.vsphere_datastore.disk_datastore[0].id : null
112+
label = length(var.disk_label) > 0 ? var.disk_label[template_disks.key] : "disk${template_disks.key}"
113+
size = var.disk_size_gb != null ? var.disk_size_gb[template_disks.key] : data.vsphere_virtual_machine.template.disks[template_disks.key].size
114+
unit_number = var.scsi_controller != null ? var.scsi_controller * 15 + template_disks.key : template_disks.key
115+
thin_provisioned = data.vsphere_virtual_machine.template.disks[template_disks.key].thin_provisioned
116+
eagerly_scrub = data.vsphere_virtual_machine.template.disks[template_disks.key].eagerly_scrub
117+
datastore_id = var.disk_datastore != "" ? data.vsphere_datastore.disk_datastore[0].id : null
118+
storage_policy_id = length(var.disk_storage_policy_id) > 0 != null ? var.disk_storage_policy_id[template_disks.key] : null
118119
}
119120
}
120121
// Additional disks defined by Terraform config
121122
dynamic "disk" {
122123
for_each = var.data_disk
123124
iterator = terraform_disks
124125
content {
125-
label = terraform_disks.key
126-
size = lookup(terraform_disks.value, "size_gb", null)
127-
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
128-
thin_provisioned = lookup(terraform_disks.value, "thin_provisioned", "true")
129-
eagerly_scrub = lookup(terraform_disks.value, "eagerly_scrub", "false")
130-
datastore_id = lookup(terraform_disks.value, "datastore_id", null)
126+
label = terraform_disks.key
127+
size = lookup(terraform_disks.value, "size_gb", null)
128+
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
129+
thin_provisioned = lookup(terraform_disks.value, "thin_provisioned", "true")
130+
eagerly_scrub = lookup(terraform_disks.value, "eagerly_scrub", "false")
131+
datastore_id = lookup(terraform_disks.value, "datastore_id", null)
132+
storage_policy_id = lookup(terraform_disks.value, "storage_policy_id", null)
131133
}
132134
}
133135
clone {
@@ -182,6 +184,7 @@ resource "vsphere_virtual_machine" "Windows" {
182184
firmware = var.firmware
183185
efi_secure_boot_enabled = var.efi_secure_boot
184186
enable_disk_uuid = var.enable_disk_uuid
187+
storage_policy_id = var.storage_policy_id
185188

186189
datastore_cluster_id = var.datastore_cluster != "" ? data.vsphere_datastore_cluster.datastore_cluster[0].id : null
187190
datastore_id = var.datastore != "" ? data.vsphere_datastore.datastore[0].id : null
@@ -222,12 +225,13 @@ resource "vsphere_virtual_machine" "Windows" {
222225
for_each = data.vsphere_virtual_machine.template.disks
223226
iterator = template_disks
224227
content {
225-
label = length(var.disk_label) > 0 ? var.disk_label[template_disks.key] : "disk${template_disks.key}"
226-
size = var.disk_size_gb != null ? var.disk_size_gb[template_disks.key] : data.vsphere_virtual_machine.template.disks[template_disks.key].size
227-
unit_number = var.scsi_controller != null ? var.scsi_controller * 15 + template_disks.key : template_disks.key
228-
thin_provisioned = data.vsphere_virtual_machine.template.disks[template_disks.key].thin_provisioned
229-
eagerly_scrub = data.vsphere_virtual_machine.template.disks[template_disks.key].eagerly_scrub
230-
datastore_id = var.disk_datastore != "" ? data.vsphere_datastore.disk_datastore[0].id : null
228+
label = length(var.disk_label) > 0 ? var.disk_label[template_disks.key] : "disk${template_disks.key}"
229+
size = var.disk_size_gb != null ? var.disk_size_gb[template_disks.key] : data.vsphere_virtual_machine.template.disks[template_disks.key].size
230+
unit_number = var.scsi_controller != null ? var.scsi_controller * 15 + template_disks.key : template_disks.key
231+
thin_provisioned = data.vsphere_virtual_machine.template.disks[template_disks.key].thin_provisioned
232+
eagerly_scrub = data.vsphere_virtual_machine.template.disks[template_disks.key].eagerly_scrub
233+
datastore_id = var.disk_datastore != "" ? data.vsphere_datastore.disk_datastore[0].id : null
234+
storage_policy_id = length(var.disk_storage_policy_id) > 0 != null ? var.disk_storage_policy_id[template_disks.key] : null
231235
}
232236
}
233237

@@ -236,12 +240,13 @@ resource "vsphere_virtual_machine" "Windows" {
236240
for_each = var.data_disk
237241
iterator = terraform_disks
238242
content {
239-
label = terraform_disks.key
240-
size = lookup(terraform_disks.value, "size_gb", null)
241-
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
242-
thin_provisioned = lookup(terraform_disks.value, "thin_provisioned", "true")
243-
eagerly_scrub = lookup(terraform_disks.value, "eagerly_scrub", "false")
244-
datastore_id = lookup(terraform_disks.value, "datastore_id", null)
243+
label = terraform_disks.key
244+
size = lookup(terraform_disks.value, "size_gb", null)
245+
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
246+
thin_provisioned = lookup(terraform_disks.value, "thin_provisioned", "true")
247+
eagerly_scrub = lookup(terraform_disks.value, "eagerly_scrub", "false")
248+
datastore_id = lookup(terraform_disks.value, "datastore_id", null)
249+
storage_policy_id = lookup(terraform_disks.value, "storage_policy_id", null)
245250
}
246251
}
247252
clone {

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ variable "disk_datastore" {
5252
default = ""
5353
}
5454

55+
variable "disk_storage_policy_id" {
56+
description = "List of UUIDs of the storage policy to assign to the template disk."
57+
type = list(any)
58+
default = []
59+
}
60+
5561
variable "scsi_bus_sharing" {
5662
description = "scsi_bus_sharing mode, acceptable values physicalSharing,virtualSharing,noSharing."
5763
type = string

0 commit comments

Comments
 (0)