Skip to content

r/virtual_machine: unable to clone template with multiple SCSI controllers and disks #1476

@sachittiwari

Description

@sachittiwari

Terraform Version

Terraform 0.13.5 and Terraform 1.0.7

vSphere Provider Version

1.12

Affected Resource(s)

vsphere_virtual_machine

Terraform Configuration Files

# Copy-paste your Terraform configurations here - for large Terraform configs,
provider "vsphere" {
  version        = "1.12"
  user           = var.vsphere_user
  password       = var.vsphere_password
  vsphere_server = var.vsphere_server

  # If you have a self-signed cert
  allow_unverified_ssl = true
}

data "vsphere_datacenter" "dc" {
  name = var.datacenter_name
}

data "vsphere_datastore" "datastore" {
  name          = var.datastore_name
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_compute_cluster" "compute_cluster" {
  name          = var.cluster_name
  datacenter_id = data.vsphere_datacenter.dc.id
}


data "vsphere_network" "network" {
  name          = var.network_name
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_virtual_machine" "template" {
  name          = var.template_name
  datacenter_id = data.vsphere_datacenter.dc.id
}

resource "vsphere_virtual_machine" "vm" {
  name             = var.vm_name
  resource_pool_id = data.vsphere_compute_cluster.compute_cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  num_cpus = var.cpus
  memory   = var.mem
  guest_id = var.guest
  annotation = var.notes
 scsi_type = data.vsphere_virtual_machine.template.scsi_type
  scsi_controller_count = "4"
  network_interface {
    network_id = data.vsphere_network.network.id
  }


disk {
    label = "disk1"
    size  = "128"
    unit_number = 15
  }
 disk {
    label = "disk2"
    size  = "128"

   unit_number = 16
  }
 disk {
    label = "disk3"

 size  = "128"
unit_number = 17
  }
 disk {
    label = "disk4"
 size  = "128"
unit_number = 18
}
 disk {
    label = "disk5"
   size  = "128"
unit_number = 30
}
 disk {
    label = "disk6"
   size  = "128"
unit_number = 33
}
 disk {
    label = "disk7"
   size  = "128"
unit_number = 31
}
 disk {
    label = "disk8"
   size  = "128"
unit_number = 32
}
 disk {
    label = "disk9"
   size  = "128"
unit_number = 45
}
 disk {
    label = "disk10"
   size  = "128"
unit_number = 46
}
 disk {
    label = "disk11"
   size  = "128"
unit_number = 47
}
 disk {
    label = "disk12"
   size  = "128"
unit_number = 48
}


  clone {
    template_uuid = data.vsphere_virtual_machine.template.id

    customize {
      linux_options {
        host_name = var.vm_name
        domain    = var.domain_name
      }
      network_interface {
        ipv4_address = var.ipaddress
        ipv4_netmask = var.netmask
      }

      ipv4_gateway    = var.gateway
    }
 }
}
# please use a service like Dropbox and share a link to the ZIP file. For
# security, you can also encrypt the files using our GPG public key.

Debug Output

https://gist.github.com/sachittiwari/a1142ddfd4a3d03034f9ca14f857c023

Panic Output

Expected Behavior

A new VM must have been created.

Actual Behavior

Error: error reconfiguring virtual machine: error processing disk changes post-clone: disk.2: cannot assign disk: unit number 1 on SCSI bus 1 is in use

│ with vsphere_virtual_machine.vm,
│ on main.tf line 49, in resource "vsphere_virtual_machine" "vm":
│ 49: resource "vsphere_virtual_machine" "vm" {

Steps to Reproduce

Create a vSphere template with 4 SCSi Controllers and 13 disks. Disks are:
0:0, 1:0,1:1, 1:2, 1:3 , 2:0, 2:1, 2:2, 2:3, 3:0, 3:1 ,3:2, 3:3
terraform apply

Important Factoids

When I try to clone a VM from the vSphere GUI using the customization spec Linux file, it works.
Same thing when trying to reproduce through terraform doesn't work.
The template has 13 disks in it.

This issue related to disk sorting and seems to be fixed already but still getting the same error. Please check debug output, sorting does not seem to be working.

References

#997

  • #0000

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions