Search code examples
terraformvsphere

error reconfiguring virtual machine: error processing disk changes post-clone: disk.0: ServerFaultCode:


I want to create Vsphere VM by terraform from snapshot. And i met problem like this.

error reconfiguring virtual machine: error processing disk changes post-clone: disk.0: ServerFaultCode: NoPermission: RESOURCE (vm-1439:2000), ACTION (queryAssociatedProfile): RESOURCE (vm-1439), ACTION (PolicyIDByVirtualDisk)

So this is my code

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

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

data "vsphere_compute_cluster" "cluster" {
  name          = "${var.vsphere_cluster}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}


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

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

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


  guest_id = "centos7_64Guest"
  folder = var.vm_folder

    network_interface {
    network_id = data.vsphere_network.network.id
    adapter_type = "vmxnet3"
  }

  disk {
    label            = "disk0"
    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}"
  }


  clone {
  template_uuid = "${data.vsphere_virtual_machine.template.id}"
  linked_clone = false

  customize {
    timeout = "20"

    linux_options {
      host_name = "localhost.localdomain"
      domain    = "${var.vm_domain}"
    }

    network_interface {
      ipv4_address = "${var.vm_ip}"
      ipv4_netmask = "${var.vm_netmask}"
    }

    ipv4_gateway    = "${var.vm_gateway}"
    dns_server_list = ["${var.vm_dns}"]
  }
  } 
}

If you have any idea, please let me know. Thank you so much.


Solution

  • Adding the user to the top vcenter object (non-propogating) and in the roles permissions (the user belongs to) add Profile-driven storage -> Profile-drivern storage view.

    So either that or downgrade the terraform vsphere provider to version 1.15.0.

    Source: https://github.com/hashicorp/terraform-provider-vsphere/issues/974#issuecomment-591956362