Hi, I’m using terraform to create virtual machines with hashicorp/vsphere"
So far, there have been no problems creating them for a long time, but now when I try and do everything the same way, the following error appears:
Error: disk.0: ServerFaultCode: The object ‘vim.Datastore:’ has already been deleted or has not been completely created
I tried manually setting #datastore_id = “datastore -2236” and it worked, but that doesn’t solve my problem.
locals {
# disk_index = compact(distinct(flatten([for disk in var.virtual_machines : [try(disk.disk1, null), try(disk.disk2, null), try(disk.disk3, null), try(disk.disk4, null)]])))
disk_map = try(merge(flatten([for key in var.virtual_machines : key.disks])...), var.virtual_machines_disks)
}
data "vsphere_datacenter" "datacenter" {
name = var.datacenter
}
data "vsphere_network" "network" {
for_each = var.virtual_machines
name = each.value["network"]
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_datastore_cluster" "datastore_cluster" {
name = var.datastore_cluster
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_compute_cluster" "cluster" {
name = var.cluster
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_virtual_machine" "template" {
name = var.common_template
datacenter_id = data.vsphere_datacenter.datacenter.id
}
resource "vsphere_virtual_machine" "vm" {
for_each = var.virtual_machines
name = each.value["name"]
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_cluster_id = data.vsphere_datastore_cluster.datastore_cluster.id
num_cpus = try(each.value["cpu"], "1")
num_cores_per_socket = try(each.value["cores"], data.vsphere_virtual_machine.template.num_cores_per_socket)
memory = each.value["memory"] * 1024
memory_reservation = can(each.value["memory_reservation"]) ? each.value["memory"] : null
guest_id = data.vsphere_virtual_machine.template.guest_id
scsi_type = data.vsphere_virtual_machine.template.scsi_type
scsi_controller_count = 4 # count the disks + 1 disk0 is not part of virtual_machines_disks
network_interface {
network_id = data.vsphere_network.network[each.key].id
adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
}
disk {
label = "disk0"
controller_type = "scsi"
size = each.value["disk"]
# size = data.vsphere_virtual_machine.template.disks.0.size
eagerly_scrub = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
unit_number = 0