Cannot find OS family for guest ID "otherGuest": No Permission

I’ve been trying to script a clone operation in VSphere with Terraform.
I am able to perform this clone manually when using VSphere UI.

When running terraform plan, the executions fails with this error:

Error: cannot find OS family for guest ID “otherGuest”: NoPermission

As seen on Terraform source code, this is only happening because I’m customizing the cloned VM with IPs… When skipping customization, terraform plan succeeds

I am not full administrator of the VSphere environment but I have quite some privileges enabled.

  • Are there any specific roles / privilege I need to have in order to avoid this error?

Thanks !

main.tf

provider "vsphere" {
  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.vsphere_datacenter}"
}

data "vsphere_datastore" "src_datastore" {
  name          = "${var.vsphere_src_datastore}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

data "vsphere_datastore" "dst_datastore" {
  name          = "${var.vsphere_dst_datastore}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

data "vsphere_resource_pool" "pool" {
  name          = "${var.vsphere_resource_pool}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

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

resource "vsphere_folder" "src_folder" {
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
  path          = "${var.vsphere_src_folder}"
  type          = "vm"
}

resource "vsphere_folder" "dst_folder" {
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
  path          = "${var.vsphere_dst_folder}"
  type          = "vm"
}

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

data "vsphere_virtual_machine" "vm_clone" {
  name          = "${var.vsphere_virtual_machine_name_src}"
  datacenter_id = "${data.vsphere_datacenter.dc.id}"
}

resource "vsphere_virtual_machine" "cloned_vm" {
  name             = "${var.vsphere_virtual_machine_name_dst}"
  resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
  datastore_id     = "${data.vsphere_datastore.dst_datastore.id}"

  num_cpus = "${var.guest_vcpu}"
  memory   = "${var.guest_memory}"
  guest_id = "otherGuest" //${data.vsphere_virtual_machine.vm_clone.guest_id}"

  scsi_type = "${data.vsphere_virtual_machine.vm_clone.scsi_type}"

  network_interface {
    network_id   = "${data.vsphere_network.network.id}"
    adapter_type = "${data.vsphere_virtual_machine.vm_clone.network_interface_types[0]}"
  }

  disk {
    label = "disk0"
    size = "${data.vsphere_virtual_machine.vm_clone.disks.0.size}"
    eagerly_scrub    = "${data.vsphere_virtual_machine.vm_clone.disks.0.eagerly_scrub}"
    thin_provisioned = "${data.vsphere_virtual_machine.vm_clone.disks.0.thin_provisioned}"
  }

  clone {
    template_uuid = "${data.vsphere_virtual_machine.vm_clone.id}"

    customize {

      linux_options {
        host_name = "${var.guest_host_name}"
        domain    = "${var.guest_domain}"
      }
    }
  }
}

terraform.tfvars

# Provider Vcenter
vsphere_user = "user"
vsphere_password = "pass"
vsphere_server = "vsphere.mydomain.com"

# Infrastructure
vsphere_datacenter = "Irvine"
vsphere_src_datastore = "MyDatastore"
vsphere_dst_datastore = "MyDatastore"
vsphere_resource_pool = "MyResourcePool"
vsphere_network = "192.168.1.x_NET"
vsphere_compute_cluster_name = "Testing Cluster"
vsphere_src_folder = "Test"
vsphere_dst_folder = "Prod"

# Infor VMware clone
# Escapes with "\\" are mandatory
vsphere_virtual_machine_name_src = "vm-to-clone"
vsphere_virtual_machine_name_dst = "cloned-vm"

# Infor VMware
guest_vcpu = "4"
guest_memory = "8192"
guest_ipv4_address = "192.168.1.15"
guest_ipv4_netmask = "24"
guest_ipv4_gateway = "192.168.1.1"
guest_dns_servers = "192.168.1.254"
guest_host_name = "test-01"