published on Tuesday, Mar 24, 2026 by Pulumi
published on Tuesday, Mar 24, 2026 by Pulumi
The vsphere.VirtualMachine resource is used to manage the lifecycle of a virtual machine.
For details on working with virtual machines in VMware vSphere, please refer to the product documentation.
About Working with Virtual Machines in Terraform
A high degree of control and flexibility is available to a vSphere administrator to configure, deploy, and manage virtual machines. The Terraform provider enables you to manage the desired state of virtual machine resources.
This section provides information on configurations you should consider when setting up virtual machines, creating templates for cloning, and more.
Disks
The vsphere.VirtualMachine resource supports standard VMDK-backed virtual disks. It does not support raw device mappings (RDMs) to proxy use of raw physical storage device
Disks are managed by a label supplied to the label attribute in a disk block. This is separate from the automatic naming that vSphere assigns when a virtual machine is created. Control of the name for a virtual disk is not supported unless you are attaching an external disk with the attach attribute.
Virtual disks can be SCSI, SATA, NVMe or IDE. The storage controllers managed by the Terraform provider can vary, depending on the value supplied to scsi_controller_count, sata_controller_count, nvme_controller_count, or ide_controller_count. This also dictates the controllers that are checked when looking for disks during a cloning process. SCSI controllers are all configured with the controller type defined by the scsi_type setting. If you are cloning from a template, devices will be added or re-configured as necessary.
When cloning from a template, you must specify disks of either the same or greater size than the disks in the source template or the same size when cloning from a snapshot (also known as a linked clone).
See the section on Creating a Virtual Machine from a Template for more information.
Customization and Network Waiters
Terraform waits during various parts of a virtual machine deployment to ensure that the virtual machine is in an expected state before proceeding. These events occur when a virtual machine is created or updated, depending on the waiter.
The waiters include the following:
Customization Waiter:
This waiter watches events in vSphere to monitor when customization on a virtual machine completes during creation. Depending on your vSphere or virtual machine configuration, it may be necessary to change the timeout or turn off the waiter. This can be controlled by using the
timeoutsetting in the customization settings block.Network Waiter:
This waiter waits for interfaces to appear on a virtual machine guest operating system and occurs close to the end of both virtual machine creation and update. This waiter ensures that the IP information gets reported to the guest operating system, mainly to facilitate the availability of a valid, reachable default IP address for any provisioners.
The behavior of the waiter can be controlled with the
wait_for_guest_net_timeout,wait_for_guest_net_routable,wait_for_guest_ip_timeout, andignored_guest_ipssettings.
Example Usage
Creating a Virtual Machine
The following block contains the option necessary to create a virtual machine, with a single disk and network interface.
In this example, the resource makes use of the following data sources:
vsphere.Datacenterto locate the datacenter,vsphere.getDatastoreto locate the default datastore to place the virtual machine files,vsphere_compute-clusterto locate a resource pool located in a cluster or standalone host, andvsphere.getNetworkto locate the network.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastore = datacenter.then(datacenter => vsphere.getDatastore({
name: "datastore-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "VM Network",
datacenterId: datacenter.id,
}));
const vm = new vsphere.VirtualMachine("vm", {
name: "foo",
resourcePoolId: cluster.then(cluster => cluster.resourcePoolId),
datastoreId: datastore.then(datastore => datastore.id),
numCpus: 1,
memory: 1024,
guestId: "otherLinux64Guest",
networkInterfaces: [{
networkId: network.then(network => network.id),
}],
disks: [{
label: "Hard Disk 1",
size: 20,
}],
});
import pulumi
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore = vsphere.get_datastore(name="datastore-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="VM Network",
datacenter_id=datacenter.id)
vm = vsphere.VirtualMachine("vm",
name="foo",
resource_pool_id=cluster.resource_pool_id,
datastore_id=datastore.id,
num_cpus=1,
memory=1024,
guest_id="otherLinux64Guest",
network_interfaces=[{
"network_id": network.id,
}],
disks=[{
"label": "Hard Disk 1",
"size": 20,
}])
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
datacenter, err := vsphere.LookupDatacenter(ctx, &vsphere.LookupDatacenterArgs{
Name: pulumi.StringRef("dc-01"),
}, nil)
if err != nil {
return err
}
datastore, err := vsphere.GetDatastore(ctx, &vsphere.GetDatastoreArgs{
Name: "datastore-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
cluster, err := vsphere.LookupComputeCluster(ctx, &vsphere.LookupComputeClusterArgs{
Name: "cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
network, err := vsphere.GetNetwork(ctx, &vsphere.GetNetworkArgs{
Name: "VM Network",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Name: pulumi.String("foo"),
ResourcePoolId: pulumi.String(cluster.ResourcePoolId),
DatastoreId: pulumi.String(datastore.Id),
NumCpus: pulumi.Int(1),
Memory: pulumi.Int(1024),
GuestId: pulumi.String("otherLinux64Guest"),
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.String(network.Id),
},
},
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Label: pulumi.String("Hard Disk 1"),
Size: pulumi.Int(20),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastore = VSphere.GetDatastore.Invoke(new()
{
Name = "datastore-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "VM Network",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var vm = new VSphere.VirtualMachine("vm", new()
{
Name = "foo",
ResourcePoolId = cluster.Apply(getComputeClusterResult => getComputeClusterResult.ResourcePoolId),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
NumCpus = 1,
Memory = 1024,
GuestId = "otherLinux64Guest",
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = network.Apply(getNetworkResult => getNetworkResult.Id),
},
},
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Label = "Hard Disk 1",
Size = 20,
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetDatacenterArgs;
import com.pulumi.vsphere.inputs.GetDatastoreArgs;
import com.pulumi.vsphere.inputs.GetComputeClusterArgs;
import com.pulumi.vsphere.inputs.GetNetworkArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineDiskArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var datacenter = VsphereFunctions.getDatacenter(GetDatacenterArgs.builder()
.name("dc-01")
.build());
final var datastore = VsphereFunctions.getDatastore(GetDatastoreArgs.builder()
.name("datastore-01")
.datacenterId(datacenter.id())
.build());
final var cluster = VsphereFunctions.getComputeCluster(GetComputeClusterArgs.builder()
.name("cluster-01")
.datacenterId(datacenter.id())
.build());
final var network = VsphereFunctions.getNetwork(GetNetworkArgs.builder()
.name("VM Network")
.datacenterId(datacenter.id())
.build());
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.name("foo")
.resourcePoolId(cluster.resourcePoolId())
.datastoreId(datastore.id())
.numCpus(1)
.memory(1024)
.guestId("otherLinux64Guest")
.networkInterfaces(VirtualMachineNetworkInterfaceArgs.builder()
.networkId(network.id())
.build())
.disks(VirtualMachineDiskArgs.builder()
.label("Hard Disk 1")
.size(20)
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
name: foo
resourcePoolId: ${cluster.resourcePoolId}
datastoreId: ${datastore.id}
numCpus: 1
memory: 1024
guestId: otherLinux64Guest
networkInterfaces:
- networkId: ${network.id}
disks:
- label: Hard Disk 1
size: 20
variables:
datacenter:
fn::invoke:
function: vsphere:getDatacenter
arguments:
name: dc-01
datastore:
fn::invoke:
function: vsphere:getDatastore
arguments:
name: datastore-01
datacenterId: ${datacenter.id}
cluster:
fn::invoke:
function: vsphere:getComputeCluster
arguments:
name: cluster-01
datacenterId: ${datacenter.id}
network:
fn::invoke:
function: vsphere:getNetwork
arguments:
name: VM Network
datacenterId: ${datacenter.id}
Cloning and Customization
Building on the above example, the below configuration creates a virtual machine by cloning it from a template, fetched using the vsphere.VirtualMachine data source. This option allows you to locate the UUID of the template to clone, along with settings for network interface type, SCSI bus type, and disk attributes.
NOTE: Cloning requires vCenter Server and is not supported on direct ESXi host connections.
Examples:
This example clones a Linux template and customizes with the provided settings:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastore = datacenter.then(datacenter => vsphere.getDatastore({
name: "datastore-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "VM Network",
datacenterId: datacenter.id,
}));
const template = datacenter.then(datacenter => vsphere.getVirtualMachine({
name: "linux-template",
datacenterId: datacenter.id,
}));
const vm = new vsphere.VirtualMachine("vm", {
name: "foo",
resourcePoolId: cluster.then(cluster => cluster.resourcePoolId),
datastoreId: datastore.then(datastore => datastore.id),
numCpus: 1,
memory: 1024,
guestId: template.then(template => template.guestId),
scsiType: template.then(template => template.scsiType),
networkInterfaces: [{
networkId: network.then(network => network.id),
adapterType: template.then(template => template.networkInterfaceTypes?.[0]),
}],
disks: [{
label: "Hard Disk 1",
size: template.then(template => template.disks?.[0]?.size),
thinProvisioned: template.then(template => template.disks?.[0]?.thinProvisioned),
}],
clone: {
templateUuid: template.then(template => template.id),
customize: {
linuxOptions: {
hostName: "foo",
domain: "example.com",
},
},
},
});
import pulumi
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore = vsphere.get_datastore(name="datastore-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="VM Network",
datacenter_id=datacenter.id)
template = vsphere.get_virtual_machine(name="linux-template",
datacenter_id=datacenter.id)
vm = vsphere.VirtualMachine("vm",
name="foo",
resource_pool_id=cluster.resource_pool_id,
datastore_id=datastore.id,
num_cpus=1,
memory=1024,
guest_id=template.guest_id,
scsi_type=template.scsi_type,
network_interfaces=[{
"network_id": network.id,
"adapter_type": template.network_interface_types[0],
}],
disks=[{
"label": "Hard Disk 1",
"size": template.disks[0].size,
"thin_provisioned": template.disks[0].thin_provisioned,
}],
clone={
"template_uuid": template.id,
"customize": {
"linux_options": {
"host_name": "foo",
"domain": "example.com",
},
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
datacenter, err := vsphere.LookupDatacenter(ctx, &vsphere.LookupDatacenterArgs{
Name: pulumi.StringRef("dc-01"),
}, nil)
if err != nil {
return err
}
datastore, err := vsphere.GetDatastore(ctx, &vsphere.GetDatastoreArgs{
Name: "datastore-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
cluster, err := vsphere.LookupComputeCluster(ctx, &vsphere.LookupComputeClusterArgs{
Name: "cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
network, err := vsphere.GetNetwork(ctx, &vsphere.GetNetworkArgs{
Name: "VM Network",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
template, err := vsphere.LookupVirtualMachine(ctx, &vsphere.LookupVirtualMachineArgs{
Name: pulumi.StringRef("linux-template"),
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Name: pulumi.String("foo"),
ResourcePoolId: pulumi.String(cluster.ResourcePoolId),
DatastoreId: pulumi.String(datastore.Id),
NumCpus: pulumi.Int(1),
Memory: pulumi.Int(1024),
GuestId: pulumi.String(template.GuestId),
ScsiType: pulumi.String(template.ScsiType),
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.String(network.Id),
AdapterType: pulumi.String(template.NetworkInterfaceTypes[0]),
},
},
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Label: pulumi.String("Hard Disk 1"),
Size: pulumi.Int(template.Disks[0].Size),
ThinProvisioned: pulumi.Bool(template.Disks[0].ThinProvisioned),
},
},
Clone: &vsphere.VirtualMachineCloneArgs{
TemplateUuid: pulumi.String(template.Id),
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
LinuxOptions: &vsphere.VirtualMachineCloneCustomizeLinuxOptionsArgs{
HostName: pulumi.String("foo"),
Domain: pulumi.String("example.com"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastore = VSphere.GetDatastore.Invoke(new()
{
Name = "datastore-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "VM Network",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var template = VSphere.GetVirtualMachine.Invoke(new()
{
Name = "linux-template",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var vm = new VSphere.VirtualMachine("vm", new()
{
Name = "foo",
ResourcePoolId = cluster.Apply(getComputeClusterResult => getComputeClusterResult.ResourcePoolId),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
NumCpus = 1,
Memory = 1024,
GuestId = template.Apply(getVirtualMachineResult => getVirtualMachineResult.GuestId),
ScsiType = template.Apply(getVirtualMachineResult => getVirtualMachineResult.ScsiType),
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = network.Apply(getNetworkResult => getNetworkResult.Id),
AdapterType = template.Apply(getVirtualMachineResult => getVirtualMachineResult.NetworkInterfaceTypes[0]),
},
},
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Label = "Hard Disk 1",
Size = template.Apply(getVirtualMachineResult => getVirtualMachineResult.Disks[0]?.Size),
ThinProvisioned = template.Apply(getVirtualMachineResult => getVirtualMachineResult.Disks[0]?.ThinProvisioned),
},
},
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
TemplateUuid = template.Apply(getVirtualMachineResult => getVirtualMachineResult.Id),
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
LinuxOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeLinuxOptionsArgs
{
HostName = "foo",
Domain = "example.com",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetDatacenterArgs;
import com.pulumi.vsphere.inputs.GetDatastoreArgs;
import com.pulumi.vsphere.inputs.GetComputeClusterArgs;
import com.pulumi.vsphere.inputs.GetNetworkArgs;
import com.pulumi.vsphere.inputs.GetVirtualMachineArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineDiskArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeLinuxOptionsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var datacenter = VsphereFunctions.getDatacenter(GetDatacenterArgs.builder()
.name("dc-01")
.build());
final var datastore = VsphereFunctions.getDatastore(GetDatastoreArgs.builder()
.name("datastore-01")
.datacenterId(datacenter.id())
.build());
final var cluster = VsphereFunctions.getComputeCluster(GetComputeClusterArgs.builder()
.name("cluster-01")
.datacenterId(datacenter.id())
.build());
final var network = VsphereFunctions.getNetwork(GetNetworkArgs.builder()
.name("VM Network")
.datacenterId(datacenter.id())
.build());
final var template = VsphereFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()
.name("linux-template")
.datacenterId(datacenter.id())
.build());
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.name("foo")
.resourcePoolId(cluster.resourcePoolId())
.datastoreId(datastore.id())
.numCpus(1)
.memory(1024)
.guestId(template.guestId())
.scsiType(template.scsiType())
.networkInterfaces(VirtualMachineNetworkInterfaceArgs.builder()
.networkId(network.id())
.adapterType(template.networkInterfaceTypes()[0])
.build())
.disks(VirtualMachineDiskArgs.builder()
.label("Hard Disk 1")
.size(template.disks()[0].size())
.thinProvisioned(template.disks()[0].thinProvisioned())
.build())
.clone(VirtualMachineCloneArgs.builder()
.templateUuid(template.id())
.customize(VirtualMachineCloneCustomizeArgs.builder()
.linuxOptions(VirtualMachineCloneCustomizeLinuxOptionsArgs.builder()
.hostName("foo")
.domain("example.com")
.build())
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
name: foo
resourcePoolId: ${cluster.resourcePoolId}
datastoreId: ${datastore.id}
numCpus: 1
memory: 1024
guestId: ${template.guestId}
scsiType: ${template.scsiType}
networkInterfaces:
- networkId: ${network.id}
adapterType: ${template.networkInterfaceTypes[0]}
disks:
- label: Hard Disk 1
size: ${template.disks[0].size}
thinProvisioned: ${template.disks[0].thinProvisioned}
clone:
templateUuid: ${template.id}
customize:
linuxOptions:
hostName: foo
domain: example.com
variables:
datacenter:
fn::invoke:
function: vsphere:getDatacenter
arguments:
name: dc-01
datastore:
fn::invoke:
function: vsphere:getDatastore
arguments:
name: datastore-01
datacenterId: ${datacenter.id}
cluster:
fn::invoke:
function: vsphere:getComputeCluster
arguments:
name: cluster-01
datacenterId: ${datacenter.id}
network:
fn::invoke:
function: vsphere:getNetwork
arguments:
name: VM Network
datacenterId: ${datacenter.id}
template:
fn::invoke:
function: vsphere:getVirtualMachine
arguments:
name: linux-template
datacenterId: ${datacenter.id}
This example uses the same structure as the previous example, but customizes with an existing guest customization specification:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
// ... other configuration ...
const linux = vsphere.getGuestOsCustomization({
name: "linux",
});
const vm = new vsphere.VirtualMachine("vm", {
templateUuid: template.id,
customizationSpec: [{
id: linux.then(linux => linux.id),
}],
});
import pulumi
import pulumi_vsphere as vsphere
# ... other configuration ...
linux = vsphere.get_guest_os_customization(name="linux")
vm = vsphere.VirtualMachine("vm",
template_uuid=template["id"],
customization_spec=[{
"id": linux.id,
}])
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// ... other configuration ...
linux, err := vsphere.LookupGuestOsCustomization(ctx, &vsphere.LookupGuestOsCustomizationArgs{
Name: "linux",
}, nil)
if err != nil {
return err
}
_, err = vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
TemplateUuid: template.Id,
CustomizationSpec: []map[string]interface{}{
map[string]interface{}{
"id": linux.Id,
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
// ... other configuration ...
var linux = VSphere.GetGuestOsCustomization.Invoke(new()
{
Name = "linux",
});
var vm = new VSphere.VirtualMachine("vm", new()
{
TemplateUuid = template.Id,
CustomizationSpec = new[]
{
{
{ "id", linux.Apply(getGuestOsCustomizationResult => getGuestOsCustomizationResult.Id) },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetGuestOsCustomizationArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// ... other configuration ...
final var linux = VsphereFunctions.getGuestOsCustomization(GetGuestOsCustomizationArgs.builder()
.name("linux")
.build());
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.templateUuid(template.id())
.customizationSpec(List.of(Map.of("id", linux.id())))
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
templateUuid: ${template.id}
customizationSpec:
- id: ${linux.id}
variables:
# ... other configuration ...
linux:
fn::invoke:
function: vsphere:getGuestOsCustomization
arguments:
name: linux
Deploying Virtual Machines from OVF/OVA
Virtual machines can be deployed from OVF/OVA using either the local path and remote URL and the ovf_deploy property. When deploying from a local path, the path to the OVF/OVA must be provided. While deploying OVF, all other necessary files (e.g. .vmdk, .mf, etc) must be present in the same directory as the .ovf file.
NOTE: The vApp properties which are pre-defined in an OVF template can be overwritten. New vApp properties can not be created for an existing OVF template.
NOTE: An OVF/OVA deployment requires vCenter Server and is not supported on direct ESXi host connections.
The following example demonstrates a scenario deploying a simple OVF/OVA, using both the local path and remote URL options.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as std from "@pulumi/std";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastore = datacenter.then(datacenter => vsphere.getDatastore({
name: "datastore-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const _default = Promise.all([cluster, datacenter]).then(([cluster, datacenter]) => vsphere.getResourcePool({
name: std.index.format({
input: "%s%s",
args: [
cluster.name,
"/Resources",
],
}).result,
datacenterId: datacenter.id,
}));
const host = datacenter.then(datacenter => vsphere.getHost({
name: "esxi-01.example.com",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "172.16.11.0",
datacenterId: datacenter.id,
}));
//# Deployment of VM from Remote OVF
const vmFromRemoteOvf = new vsphere.VirtualMachine("vmFromRemoteOvf", {
name: "remote-foo",
datacenterId: datacenter.then(datacenter => datacenter.id),
datastoreId: datastore.then(datastore => datastore.i),
resourcePoolId: _default.then(_default => _default.id),
waitForGuestNetTimeout: 0,
waitForGuestIpTimeout: 0,
ovfDeploy: {
allowUnverifiedSslCert: false,
remoteOvfUrl: "https://example.com/foo.ova",
diskProvisioning: "thin",
ipProtocol: "IPV4",
ipAllocationPolicy: "STATIC_MANUAL",
ovfNetworkMap: {
"Network 1": network.then(network => network.id),
"Network 2": network.then(network => network.id),
},
},
vapp: {
properties: {
"guestinfo.hostname": "remote-foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
},
});
//# Deployment of VM from Local OVF
const vmFromLocalOvf = new vsphere.VirtualMachine("vmFromLocalOvf", {
name: "local-foo",
datacenterId: datacenter.then(datacenter => datacenter.id),
datastoreId: datastore.then(datastore => datastore.id),
resourcePoolId: _default.then(_default => _default.id),
waitForGuestNetTimeout: 0,
waitForGuestIpTimeout: 0,
ovfDeploy: {
allowUnverifiedSslCert: false,
localOvfPath: "/Volume/Storage/OVAs/foo.ova",
diskProvisioning: "thin",
ipProtocol: "IPV4",
ipAllocationPolicy: "STATIC_MANUAL",
ovfNetworkMap: {
"Network 1": network.then(network => network.id),
"Network 2": network.then(network => network.id),
},
},
vapp: {
properties: {
"guestinfo.hostname": "local-foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
},
});
import pulumi
import pulumi_std as std
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore = vsphere.get_datastore(name="datastore-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
default = vsphere.get_resource_pool(name=std.index.format(input="%s%s",
args=[
cluster.name,
"/Resources",
])["result"],
datacenter_id=datacenter.id)
host = vsphere.get_host(name="esxi-01.example.com",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="172.16.11.0",
datacenter_id=datacenter.id)
## Deployment of VM from Remote OVF
vm_from_remote_ovf = vsphere.VirtualMachine("vmFromRemoteOvf",
name="remote-foo",
datacenter_id=datacenter.id,
datastore_id=datastore.i,
resource_pool_id=default.id,
wait_for_guest_net_timeout=0,
wait_for_guest_ip_timeout=0,
ovf_deploy={
"allow_unverified_ssl_cert": False,
"remote_ovf_url": "https://example.com/foo.ova",
"disk_provisioning": "thin",
"ip_protocol": "IPV4",
"ip_allocation_policy": "STATIC_MANUAL",
"ovf_network_map": {
"Network 1": network.id,
"Network 2": network.id,
},
},
vapp={
"properties": {
"guestinfo.hostname": "remote-foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
})
## Deployment of VM from Local OVF
vm_from_local_ovf = vsphere.VirtualMachine("vmFromLocalOvf",
name="local-foo",
datacenter_id=datacenter.id,
datastore_id=datastore.id,
resource_pool_id=default.id,
wait_for_guest_net_timeout=0,
wait_for_guest_ip_timeout=0,
ovf_deploy={
"allow_unverified_ssl_cert": False,
"local_ovf_path": "/Volume/Storage/OVAs/foo.ova",
"disk_provisioning": "thin",
"ip_protocol": "IPV4",
"ip_allocation_policy": "STATIC_MANUAL",
"ovf_network_map": {
"Network 1": network.id,
"Network 2": network.id,
},
},
vapp={
"properties": {
"guestinfo.hostname": "local-foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
})
package main
import (
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
datacenter, err := vsphere.LookupDatacenter(ctx, &vsphere.LookupDatacenterArgs{
Name: pulumi.StringRef("dc-01"),
}, nil)
if err != nil {
return err
}
datastore, err := vsphere.GetDatastore(ctx, &vsphere.GetDatastoreArgs{
Name: "datastore-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
cluster, err := vsphere.LookupComputeCluster(ctx, &vsphere.LookupComputeClusterArgs{
Name: "cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_default, err := vsphere.LookupResourcePool(ctx, &vsphere.LookupResourcePoolArgs{
Name: pulumi.StringRef(std.Format(ctx, map[string]interface{}{
"input": "%s%s",
"args": []*string{
cluster.Name,
"/Resources",
},
}, nil).Result),
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.LookupHost(ctx, &vsphere.LookupHostArgs{
Name: pulumi.StringRef("esxi-01.example.com"),
DatacenterId: datacenter.Id,
}, nil)
if err != nil {
return err
}
network, err := vsphere.GetNetwork(ctx, &vsphere.GetNetworkArgs{
Name: "172.16.11.0",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
// # Deployment of VM from Remote OVF
_, err = vsphere.NewVirtualMachine(ctx, "vmFromRemoteOvf", &vsphere.VirtualMachineArgs{
Name: pulumi.String("remote-foo"),
DatacenterId: pulumi.String(datacenter.Id),
DatastoreId: pulumi.Any(datastore.I),
ResourcePoolId: pulumi.String(_default.Id),
WaitForGuestNetTimeout: pulumi.Int(0),
WaitForGuestIpTimeout: pulumi.Int(0),
OvfDeploy: &vsphere.VirtualMachineOvfDeployArgs{
AllowUnverifiedSslCert: pulumi.Bool(false),
RemoteOvfUrl: pulumi.String("https://example.com/foo.ova"),
DiskProvisioning: pulumi.String("thin"),
IpProtocol: pulumi.String("IPV4"),
IpAllocationPolicy: pulumi.String("STATIC_MANUAL"),
OvfNetworkMap: pulumi.StringMap{
"Network 1": pulumi.String(network.Id),
"Network 2": pulumi.String(network.Id),
},
},
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
"guestinfo.hostname": pulumi.String("remote-foo.example.com"),
"guestinfo.ipaddress": pulumi.String("172.16.11.101"),
"guestinfo.netmask": pulumi.String("255.255.255.0"),
"guestinfo.gateway": pulumi.String("172.16.11.1"),
"guestinfo.dns": pulumi.String("172.16.11.4"),
"guestinfo.domain": pulumi.String("example.com"),
"guestinfo.ntp": pulumi.String("ntp.example.com"),
"guestinfo.password": pulumi.String("VMware1!"),
"guestinfo.ssh": pulumi.String("True"),
},
},
})
if err != nil {
return err
}
// # Deployment of VM from Local OVF
_, err = vsphere.NewVirtualMachine(ctx, "vmFromLocalOvf", &vsphere.VirtualMachineArgs{
Name: pulumi.String("local-foo"),
DatacenterId: pulumi.String(datacenter.Id),
DatastoreId: pulumi.String(datastore.Id),
ResourcePoolId: pulumi.String(_default.Id),
WaitForGuestNetTimeout: pulumi.Int(0),
WaitForGuestIpTimeout: pulumi.Int(0),
OvfDeploy: &vsphere.VirtualMachineOvfDeployArgs{
AllowUnverifiedSslCert: pulumi.Bool(false),
LocalOvfPath: pulumi.String("/Volume/Storage/OVAs/foo.ova"),
DiskProvisioning: pulumi.String("thin"),
IpProtocol: pulumi.String("IPV4"),
IpAllocationPolicy: pulumi.String("STATIC_MANUAL"),
OvfNetworkMap: pulumi.StringMap{
"Network 1": pulumi.String(network.Id),
"Network 2": pulumi.String(network.Id),
},
},
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
"guestinfo.hostname": pulumi.String("local-foo.example.com"),
"guestinfo.ipaddress": pulumi.String("172.16.11.101"),
"guestinfo.netmask": pulumi.String("255.255.255.0"),
"guestinfo.gateway": pulumi.String("172.16.11.1"),
"guestinfo.dns": pulumi.String("172.16.11.4"),
"guestinfo.domain": pulumi.String("example.com"),
"guestinfo.ntp": pulumi.String("ntp.example.com"),
"guestinfo.password": pulumi.String("VMware1!"),
"guestinfo.ssh": pulumi.String("True"),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Std = Pulumi.Std;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastore = VSphere.GetDatastore.Invoke(new()
{
Name = "datastore-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var @default = VSphere.GetResourcePool.Invoke(new()
{
Name = Std.Index.Format.Invoke(new()
{
Input = "%s%s",
Args = new[]
{
cluster.Apply(getComputeClusterResult => getComputeClusterResult.Name),
"/Resources",
},
}).Result,
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var host = VSphere.GetHost.Invoke(new()
{
Name = "esxi-01.example.com",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "172.16.11.0",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
//# Deployment of VM from Remote OVF
var vmFromRemoteOvf = new VSphere.VirtualMachine("vmFromRemoteOvf", new()
{
Name = "remote-foo",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.I),
ResourcePoolId = @default.Apply(@default => @default.Apply(getResourcePoolResult => getResourcePoolResult.Id)),
WaitForGuestNetTimeout = 0,
WaitForGuestIpTimeout = 0,
OvfDeploy = new VSphere.Inputs.VirtualMachineOvfDeployArgs
{
AllowUnverifiedSslCert = false,
RemoteOvfUrl = "https://example.com/foo.ova",
DiskProvisioning = "thin",
IpProtocol = "IPV4",
IpAllocationPolicy = "STATIC_MANUAL",
OvfNetworkMap =
{
{ "Network 1", network.Apply(getNetworkResult => getNetworkResult.Id) },
{ "Network 2", network.Apply(getNetworkResult => getNetworkResult.Id) },
},
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "guestinfo.hostname", "remote-foo.example.com" },
{ "guestinfo.ipaddress", "172.16.11.101" },
{ "guestinfo.netmask", "255.255.255.0" },
{ "guestinfo.gateway", "172.16.11.1" },
{ "guestinfo.dns", "172.16.11.4" },
{ "guestinfo.domain", "example.com" },
{ "guestinfo.ntp", "ntp.example.com" },
{ "guestinfo.password", "VMware1!" },
{ "guestinfo.ssh", "True" },
},
},
});
//# Deployment of VM from Local OVF
var vmFromLocalOvf = new VSphere.VirtualMachine("vmFromLocalOvf", new()
{
Name = "local-foo",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
ResourcePoolId = @default.Apply(@default => @default.Apply(getResourcePoolResult => getResourcePoolResult.Id)),
WaitForGuestNetTimeout = 0,
WaitForGuestIpTimeout = 0,
OvfDeploy = new VSphere.Inputs.VirtualMachineOvfDeployArgs
{
AllowUnverifiedSslCert = false,
LocalOvfPath = "/Volume/Storage/OVAs/foo.ova",
DiskProvisioning = "thin",
IpProtocol = "IPV4",
IpAllocationPolicy = "STATIC_MANUAL",
OvfNetworkMap =
{
{ "Network 1", network.Apply(getNetworkResult => getNetworkResult.Id) },
{ "Network 2", network.Apply(getNetworkResult => getNetworkResult.Id) },
},
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "guestinfo.hostname", "local-foo.example.com" },
{ "guestinfo.ipaddress", "172.16.11.101" },
{ "guestinfo.netmask", "255.255.255.0" },
{ "guestinfo.gateway", "172.16.11.1" },
{ "guestinfo.dns", "172.16.11.4" },
{ "guestinfo.domain", "example.com" },
{ "guestinfo.ntp", "ntp.example.com" },
{ "guestinfo.password", "VMware1!" },
{ "guestinfo.ssh", "True" },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetDatacenterArgs;
import com.pulumi.vsphere.inputs.GetDatastoreArgs;
import com.pulumi.vsphere.inputs.GetComputeClusterArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.vsphere.inputs.GetResourcePoolArgs;
import com.pulumi.vsphere.inputs.GetHostArgs;
import com.pulumi.vsphere.inputs.GetNetworkArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineOvfDeployArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVappArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var datacenter = VsphereFunctions.getDatacenter(GetDatacenterArgs.builder()
.name("dc-01")
.build());
final var datastore = VsphereFunctions.getDatastore(GetDatastoreArgs.builder()
.name("datastore-01")
.datacenterId(datacenter.id())
.build());
final var cluster = VsphereFunctions.getComputeCluster(GetComputeClusterArgs.builder()
.name("cluster-01")
.datacenterId(datacenter.id())
.build());
final var default = VsphereFunctions.getResourcePool(GetResourcePoolArgs.builder()
.name(StdFunctions.format(Map.ofEntries(
Map.entry("input", "%s%s"),
Map.entry("args",
cluster.name(),
"/Resources")
)).result())
.datacenterId(datacenter.id())
.build());
final var host = VsphereFunctions.getHost(GetHostArgs.builder()
.name("esxi-01.example.com")
.datacenterId(datacenter.id())
.build());
final var network = VsphereFunctions.getNetwork(GetNetworkArgs.builder()
.name("172.16.11.0")
.datacenterId(datacenter.id())
.build());
//# Deployment of VM from Remote OVF
var vmFromRemoteOvf = new VirtualMachine("vmFromRemoteOvf", VirtualMachineArgs.builder()
.name("remote-foo")
.datacenterId(datacenter.id())
.datastoreId(datastore.i())
.resourcePoolId(default_.id())
.waitForGuestNetTimeout(0)
.waitForGuestIpTimeout(0)
.ovfDeploy(VirtualMachineOvfDeployArgs.builder()
.allowUnverifiedSslCert(false)
.remoteOvfUrl("https://example.com/foo.ova")
.diskProvisioning("thin")
.ipProtocol("IPV4")
.ipAllocationPolicy("STATIC_MANUAL")
.ovfNetworkMap(Map.ofEntries(
Map.entry("Network 1", network.id()),
Map.entry("Network 2", network.id())
))
.build())
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.ofEntries(
Map.entry("guestinfo.hostname", "remote-foo.example.com"),
Map.entry("guestinfo.ipaddress", "172.16.11.101"),
Map.entry("guestinfo.netmask", "255.255.255.0"),
Map.entry("guestinfo.gateway", "172.16.11.1"),
Map.entry("guestinfo.dns", "172.16.11.4"),
Map.entry("guestinfo.domain", "example.com"),
Map.entry("guestinfo.ntp", "ntp.example.com"),
Map.entry("guestinfo.password", "VMware1!"),
Map.entry("guestinfo.ssh", "True")
))
.build())
.build());
//# Deployment of VM from Local OVF
var vmFromLocalOvf = new VirtualMachine("vmFromLocalOvf", VirtualMachineArgs.builder()
.name("local-foo")
.datacenterId(datacenter.id())
.datastoreId(datastore.id())
.resourcePoolId(default_.id())
.waitForGuestNetTimeout(0)
.waitForGuestIpTimeout(0)
.ovfDeploy(VirtualMachineOvfDeployArgs.builder()
.allowUnverifiedSslCert(false)
.localOvfPath("/Volume/Storage/OVAs/foo.ova")
.diskProvisioning("thin")
.ipProtocol("IPV4")
.ipAllocationPolicy("STATIC_MANUAL")
.ovfNetworkMap(Map.ofEntries(
Map.entry("Network 1", network.id()),
Map.entry("Network 2", network.id())
))
.build())
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.ofEntries(
Map.entry("guestinfo.hostname", "local-foo.example.com"),
Map.entry("guestinfo.ipaddress", "172.16.11.101"),
Map.entry("guestinfo.netmask", "255.255.255.0"),
Map.entry("guestinfo.gateway", "172.16.11.1"),
Map.entry("guestinfo.dns", "172.16.11.4"),
Map.entry("guestinfo.domain", "example.com"),
Map.entry("guestinfo.ntp", "ntp.example.com"),
Map.entry("guestinfo.password", "VMware1!"),
Map.entry("guestinfo.ssh", "True")
))
.build())
.build());
}
}
resources:
## Deployment of VM from Remote OVF
vmFromRemoteOvf:
type: vsphere:VirtualMachine
properties:
name: remote-foo
datacenterId: ${datacenter.id}
datastoreId: ${datastore.i}
resourcePoolId: ${default.id}
waitForGuestNetTimeout: 0
waitForGuestIpTimeout: 0
ovfDeploy:
allowUnverifiedSslCert: false
remoteOvfUrl: https://example.com/foo.ova
diskProvisioning: thin
ipProtocol: IPV4
ipAllocationPolicy: STATIC_MANUAL
ovfNetworkMap:
Network 1: ${network.id}
Network 2: ${network.id}
vapp:
properties:
guestinfo.hostname: remote-foo.example.com
guestinfo.ipaddress: 172.16.11.101
guestinfo.netmask: 255.255.255.0
guestinfo.gateway: 172.16.11.1
guestinfo.dns: 172.16.11.4
guestinfo.domain: example.com
guestinfo.ntp: ntp.example.com
guestinfo.password: VMware1!
guestinfo.ssh: True
## Deployment of VM from Local OVF
vmFromLocalOvf:
type: vsphere:VirtualMachine
properties:
name: local-foo
datacenterId: ${datacenter.id}
datastoreId: ${datastore.id}
resourcePoolId: ${default.id}
waitForGuestNetTimeout: 0
waitForGuestIpTimeout: 0
ovfDeploy:
allowUnverifiedSslCert: false
localOvfPath: /Volume/Storage/OVAs/foo.ova
diskProvisioning: thin
ipProtocol: IPV4
ipAllocationPolicy: STATIC_MANUAL
ovfNetworkMap:
Network 1: ${network.id}
Network 2: ${network.id}
vapp:
properties:
guestinfo.hostname: local-foo.example.com
guestinfo.ipaddress: 172.16.11.101
guestinfo.netmask: 255.255.255.0
guestinfo.gateway: 172.16.11.1
guestinfo.dns: 172.16.11.4
guestinfo.domain: example.com
guestinfo.ntp: ntp.example.com
guestinfo.password: VMware1!
guestinfo.ssh: True
variables:
datacenter:
fn::invoke:
function: vsphere:getDatacenter
arguments:
name: dc-01
datastore:
fn::invoke:
function: vsphere:getDatastore
arguments:
name: datastore-01
datacenterId: ${datacenter.id}
cluster:
fn::invoke:
function: vsphere:getComputeCluster
arguments:
name: cluster-01
datacenterId: ${datacenter.id}
default:
fn::invoke:
function: vsphere:getResourcePool
arguments:
name:
fn::invoke:
function: std:format
arguments:
input: '%s%s'
args:
- ${cluster.name}
- /Resources
return: result
datacenterId: ${datacenter.id}
host:
fn::invoke:
function: vsphere:getHost
arguments:
name: esxi-01.example.com
datacenterId: ${datacenter.id}
network:
fn::invoke:
function: vsphere:getNetwork
arguments:
name: 172.16.11.0
datacenterId: ${datacenter.id}
In some scenarios, the Terraform provider may attempt to apply only the default settings. A virtual machine deployed directly from an OVF/OVA may not match the OVF specification. For example, if the scsi_type option is not included in a vsphere.VirtualMachine resource, the provider will apply a default value of pvscsi and the virtual machine may not boot. In this scenario, use the vsphere.getOvfVmTemplate data source to parse the OVF properties and use the property value as parameters for the vsphere.VirtualMachine resource.
The following example demonstrates a scenario deploying a nested ESXi host from an OVF/OVA, using the remote URL and local path options.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as std from "@pulumi/std";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastore = datacenter.then(datacenter => vsphere.getDatastore({
name: "datastore-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const _default = Promise.all([cluster, datacenter]).then(([cluster, datacenter]) => vsphere.getResourcePool({
name: std.index.format({
input: "%s%s",
args: [
cluster.name,
"/Resources",
],
}).result,
datacenterId: datacenter.id,
}));
const host = datacenter.then(datacenter => vsphere.getHost({
name: "esxi-01.example.com",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "172.16.11.0",
datacenterId: datacenter.id,
}));
//# Remote OVF/OVA Source
const ovfRemote = Promise.all([_default, datastore, network]).then(([_default, datastore, network]) => vsphere.getOvfVmTemplate({
name: "ubuntu-xx.xx-server-cloudimg-amd64.ova",
diskProvisioning: "thin",
resourcePoolId: _default.id,
datastoreId: datastore.id,
remoteOvfUrl: "https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
ovfNetworkMap: {
"VM Network": network.id,
},
}));
//# Local OVF/OVA Source
const ovfLocal = Promise.all([_default, datastore, network]).then(([_default, datastore, network]) => vsphere.getOvfVmTemplate({
name: "ubuntu-xx.xx-server-cloudimg-amd64.ova",
diskProvisioning: "thin",
resourcePoolId: _default.id,
datastoreId: datastore.id,
localOvfPath: "/Volume/Storage/OVA/ubuntu-xx-xx-server-cloudimg-amd64.ova",
ovfNetworkMap: {
"VM Network": network.id,
},
}));
//# Deployment of VM from Remote OVF
const vmFromRemoteOvf = new vsphere.VirtualMachine("vmFromRemoteOvf", {
networkInterfaces: .map(entry => ({
networkId: entry.value,
})),
name: "ubuntu-server-cloud-image-01",
datacenterId: datacenter.then(datacenter => datacenter.id),
datastoreId: datastore.then(datastore => datastore.id),
resourcePoolId: _default.then(_default => _default.id),
numCpus: ovfRemote.then(ovfRemote => ovfRemote.numCpus),
numCoresPerSocket: ovfRemote.then(ovfRemote => ovfRemote.numCoresPerSocket),
memory: ovfRemote.then(ovfRemote => ovfRemote.memory),
guestId: ovfRemote.then(ovfRemote => ovfRemote.guestId),
firmware: ovfRemote.then(ovfRemote => ovfRemote.firmware),
scsiType: ovfRemote.then(ovfRemote => ovfRemote.scsiType),
waitForGuestNetTimeout: 0,
waitForGuestIpTimeout: 0,
ovfDeploy: {
remoteOvfUrl: "https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
ovfNetworkMap: ovfRemote.then(ovfRemote => ovfRemote.ovfNetworkMap),
},
cdroms: [{
clientDevice: true,
}],
vapp: {
properties: {
hostname: remoteOvfName,
"instance-id": remoteOvfUuid,
"public-keys": remoteOvfPublicKeys,
password: remoteOvfPassword,
"user-data": std.index.base64encode({
input: remoteOvfUserData,
}).result,
},
},
});
//# Deployment of VM from Local OVF
const vmFromLocalOvf = new vsphere.VirtualMachine("vmFromLocalOvf", {
networkInterfaces: .map(entry => ({
networkId: entry.value,
})),
name: "ubuntu-server-cloud-image-02",
datacenterId: datacenter.then(datacenter => datacenter.id),
datastoreId: datastore.then(datastore => datastore.id),
resourcePoolId: _default.then(_default => _default.id),
numCpus: ovfLocal.then(ovfLocal => ovfLocal.numCpus),
numCoresPerSocket: ovfLocal.then(ovfLocal => ovfLocal.numCoresPerSocket),
memory: ovfLocal.then(ovfLocal => ovfLocal.memory),
guestId: ovfLocal.then(ovfLocal => ovfLocal.guestId),
firmware: ovfLocal.then(ovfLocal => ovfLocal.firmware),
scsiType: ovfLocal.then(ovfLocal => ovfLocal.scsiType),
waitForGuestNetTimeout: 0,
waitForGuestIpTimeout: 0,
ovfDeploy: {
allowUnverifiedSslCert: false,
localOvfPath: ovfLocal.then(ovfLocal => ovfLocal.localOvfPath),
diskProvisioning: ovfLocal.then(ovfLocal => ovfLocal.diskProvisioning),
ovfNetworkMap: ovfLocal.then(ovfLocal => ovfLocal.ovfNetworkMap),
},
cdroms: [{
clientDevice: true,
}],
vapp: {
properties: {
hostname: localOvfName,
"instance-id": localOvfUuid,
"public-keys": localOvfPublicKeys,
password: localOvfPassword,
"user-data": std.index.base64encode({
input: localOvfUserData,
}).result,
},
},
});
import pulumi
import pulumi_std as std
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore = vsphere.get_datastore(name="datastore-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
default = vsphere.get_resource_pool(name=std.index.format(input="%s%s",
args=[
cluster.name,
"/Resources",
])["result"],
datacenter_id=datacenter.id)
host = vsphere.get_host(name="esxi-01.example.com",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="172.16.11.0",
datacenter_id=datacenter.id)
## Remote OVF/OVA Source
ovf_remote = vsphere.get_ovf_vm_template(name="ubuntu-xx.xx-server-cloudimg-amd64.ova",
disk_provisioning="thin",
resource_pool_id=default.id,
datastore_id=datastore.id,
remote_ovf_url="https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
ovf_network_map={
"VM Network": network.id,
})
## Local OVF/OVA Source
ovf_local = vsphere.get_ovf_vm_template(name="ubuntu-xx.xx-server-cloudimg-amd64.ova",
disk_provisioning="thin",
resource_pool_id=default.id,
datastore_id=datastore.id,
local_ovf_path="/Volume/Storage/OVA/ubuntu-xx-xx-server-cloudimg-amd64.ova",
ovf_network_map={
"VM Network": network.id,
})
## Deployment of VM from Remote OVF
vm_from_remote_ovf = vsphere.VirtualMachine("vmFromRemoteOvf",
network_interfaces=[{"key": k, "value": v} for k, v in ovf_remote.ovf_network_map.items()].apply(lambda entries: [{
"networkId": entry["value"],
} for entry in entries]),
name="ubuntu-server-cloud-image-01",
datacenter_id=datacenter.id,
datastore_id=datastore.id,
resource_pool_id=default.id,
num_cpus=ovf_remote.num_cpus,
num_cores_per_socket=ovf_remote.num_cores_per_socket,
memory=ovf_remote.memory,
guest_id=ovf_remote.guest_id,
firmware=ovf_remote.firmware,
scsi_type=ovf_remote.scsi_type,
wait_for_guest_net_timeout=0,
wait_for_guest_ip_timeout=0,
ovf_deploy={
"remote_ovf_url": "https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
"ovf_network_map": ovf_remote.ovf_network_map,
},
cdroms=[{
"client_device": True,
}],
vapp={
"properties": {
"hostname": remote_ovf_name,
"instance-id": remote_ovf_uuid,
"public-keys": remote_ovf_public_keys,
"password": remote_ovf_password,
"user-data": std.index.base64encode(input=remote_ovf_user_data)["result"],
},
})
## Deployment of VM from Local OVF
vm_from_local_ovf = vsphere.VirtualMachine("vmFromLocalOvf",
network_interfaces=[{"key": k, "value": v} for k, v in ovf_local.ovf_network_map.items()].apply(lambda entries: [{
"networkId": entry["value"],
} for entry in entries]),
name="ubuntu-server-cloud-image-02",
datacenter_id=datacenter.id,
datastore_id=datastore.id,
resource_pool_id=default.id,
num_cpus=ovf_local.num_cpus,
num_cores_per_socket=ovf_local.num_cores_per_socket,
memory=ovf_local.memory,
guest_id=ovf_local.guest_id,
firmware=ovf_local.firmware,
scsi_type=ovf_local.scsi_type,
wait_for_guest_net_timeout=0,
wait_for_guest_ip_timeout=0,
ovf_deploy={
"allow_unverified_ssl_cert": False,
"local_ovf_path": ovf_local.local_ovf_path,
"disk_provisioning": ovf_local.disk_provisioning,
"ovf_network_map": ovf_local.ovf_network_map,
},
cdroms=[{
"client_device": True,
}],
vapp={
"properties": {
"hostname": local_ovf_name,
"instance-id": local_ovf_uuid,
"public-keys": local_ovf_public_keys,
"password": local_ovf_password,
"user-data": std.index.base64encode(input=local_ovf_user_data)["result"],
},
})
Example coming soon!
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Std = Pulumi.Std;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastore = VSphere.GetDatastore.Invoke(new()
{
Name = "datastore-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var @default = VSphere.GetResourcePool.Invoke(new()
{
Name = Std.Index.Format.Invoke(new()
{
Input = "%s%s",
Args = new[]
{
cluster.Apply(getComputeClusterResult => getComputeClusterResult.Name),
"/Resources",
},
}).Result,
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var host = VSphere.GetHost.Invoke(new()
{
Name = "esxi-01.example.com",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "172.16.11.0",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
//# Remote OVF/OVA Source
var ovfRemote = VSphere.GetOvfVmTemplate.Invoke(new()
{
Name = "ubuntu-xx.xx-server-cloudimg-amd64.ova",
DiskProvisioning = "thin",
ResourcePoolId = @default.Apply(getResourcePoolResult => getResourcePoolResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
RemoteOvfUrl = "https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
OvfNetworkMap =
{
{ "VM Network", network.Apply(getNetworkResult => getNetworkResult.Id) },
},
});
//# Local OVF/OVA Source
var ovfLocal = VSphere.GetOvfVmTemplate.Invoke(new()
{
Name = "ubuntu-xx.xx-server-cloudimg-amd64.ova",
DiskProvisioning = "thin",
ResourcePoolId = @default.Apply(getResourcePoolResult => getResourcePoolResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
LocalOvfPath = "/Volume/Storage/OVA/ubuntu-xx-xx-server-cloudimg-amd64.ova",
OvfNetworkMap =
{
{ "VM Network", network.Apply(getNetworkResult => getNetworkResult.Id) },
},
});
//# Deployment of VM from Remote OVF
var vmFromRemoteOvf = new VSphere.VirtualMachine("vmFromRemoteOvf", new()
{
NetworkInterfaces = ,
Name = "ubuntu-server-cloud-image-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
ResourcePoolId = @default.Apply(@default => @default.Apply(getResourcePoolResult => getResourcePoolResult.Id)),
NumCpus = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.NumCpus),
NumCoresPerSocket = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.NumCoresPerSocket),
Memory = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.Memory),
GuestId = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.GuestId),
Firmware = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.Firmware),
ScsiType = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.ScsiType),
WaitForGuestNetTimeout = 0,
WaitForGuestIpTimeout = 0,
OvfDeploy = new VSphere.Inputs.VirtualMachineOvfDeployArgs
{
RemoteOvfUrl = "https://cloud-images.ubuntu.com/releases/xx.xx/release/ubuntu-xx.xx-server-cloudimg-amd64.ova",
OvfNetworkMap = ovfRemote.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.OvfNetworkMap),
},
Cdroms = new[]
{
new VSphere.Inputs.VirtualMachineCdromArgs
{
ClientDevice = true,
},
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "hostname", remoteOvfName },
{ "instance-id", remoteOvfUuid },
{ "public-keys", remoteOvfPublicKeys },
{ "password", remoteOvfPassword },
{ "user-data", Std.Index.Base64encode.Invoke(new()
{
Input = remoteOvfUserData,
}).Result },
},
},
});
//# Deployment of VM from Local OVF
var vmFromLocalOvf = new VSphere.VirtualMachine("vmFromLocalOvf", new()
{
NetworkInterfaces = ,
Name = "ubuntu-server-cloud-image-02",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
ResourcePoolId = @default.Apply(@default => @default.Apply(getResourcePoolResult => getResourcePoolResult.Id)),
NumCpus = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.NumCpus),
NumCoresPerSocket = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.NumCoresPerSocket),
Memory = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.Memory),
GuestId = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.GuestId),
Firmware = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.Firmware),
ScsiType = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.ScsiType),
WaitForGuestNetTimeout = 0,
WaitForGuestIpTimeout = 0,
OvfDeploy = new VSphere.Inputs.VirtualMachineOvfDeployArgs
{
AllowUnverifiedSslCert = false,
LocalOvfPath = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.LocalOvfPath),
DiskProvisioning = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.DiskProvisioning),
OvfNetworkMap = ovfLocal.Apply(getOvfVmTemplateResult => getOvfVmTemplateResult.OvfNetworkMap),
},
Cdroms = new[]
{
new VSphere.Inputs.VirtualMachineCdromArgs
{
ClientDevice = true,
},
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "hostname", localOvfName },
{ "instance-id", localOvfUuid },
{ "public-keys", localOvfPublicKeys },
{ "password", localOvfPassword },
{ "user-data", Std.Index.Base64encode.Invoke(new()
{
Input = localOvfUserData,
}).Result },
},
},
});
});
Example coming soon!
Example coming soon!
Cloning from an OVF/OVA with vApp Properties
This alternate example illustrates how to clone a virtual machine from a template that originated from an OVF/OVA. This leverages the resource’s vApp properties capabilities to set appropriate keys that control various configuration settings on the virtual machine or virtual appliance. In this scenario, using customize is not recommended as the functionality tends to overlap.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as std from "@pulumi/std";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastore = datacenter.then(datacenter => vsphere.getDatastore({
name: "datastore-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const _default = Promise.all([cluster, datacenter]).then(([cluster, datacenter]) => vsphere.getResourcePool({
name: std.index.format({
input: "%s%s",
args: [
cluster.name,
"/Resources",
],
}).result,
datacenterId: datacenter.id,
}));
const host = datacenter.then(datacenter => vsphere.getHost({
name: "esxi-01.example.com",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "172.16.11.0",
datacenterId: datacenter.id,
}));
const templateFromOvf = datacenter.then(datacenter => vsphere.getVirtualMachine({
name: "ubuntu-server-template-from-ova",
datacenterId: datacenter.id,
}));
const vm = new vsphere.VirtualMachine("vm", {
name: "foo",
resourcePoolId: cluster.then(cluster => cluster.resourcePoolId),
datastoreId: datastore.then(datastore => datastore.id),
numCpus: 2,
memory: 1024,
guestId: template.guestId,
scsiType: template.scsiType,
networkInterfaces: [{
networkId: network.then(network => network.id),
adapterType: template.networkInterfaceTypes[0],
}],
disks: [{
name: "Hard Disk 1",
size: templateFromOvf.then(templateFromOvf => templateFromOvf.disks?.[0]?.size),
thinProvisioned: templateFromOvf.then(templateFromOvf => templateFromOvf.disks?.[0]?.thinProvisioned),
}],
clone: {
templateUuid: templateFromOvf.then(templateFromOvf => templateFromOvf.id),
},
vapp: {
properties: {
"guestinfo.hostname": "foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
},
});
import pulumi
import pulumi_std as std
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore = vsphere.get_datastore(name="datastore-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
default = vsphere.get_resource_pool(name=std.index.format(input="%s%s",
args=[
cluster.name,
"/Resources",
])["result"],
datacenter_id=datacenter.id)
host = vsphere.get_host(name="esxi-01.example.com",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="172.16.11.0",
datacenter_id=datacenter.id)
template_from_ovf = vsphere.get_virtual_machine(name="ubuntu-server-template-from-ova",
datacenter_id=datacenter.id)
vm = vsphere.VirtualMachine("vm",
name="foo",
resource_pool_id=cluster.resource_pool_id,
datastore_id=datastore.id,
num_cpus=2,
memory=1024,
guest_id=template["guestId"],
scsi_type=template["scsiType"],
network_interfaces=[{
"network_id": network.id,
"adapter_type": template["networkInterfaceTypes"][0],
}],
disks=[{
"name": "Hard Disk 1",
"size": template_from_ovf.disks[0].size,
"thin_provisioned": template_from_ovf.disks[0].thin_provisioned,
}],
clone={
"template_uuid": template_from_ovf.id,
},
vapp={
"properties": {
"guestinfo.hostname": "foo.example.com",
"guestinfo.ipaddress": "172.16.11.101",
"guestinfo.netmask": "255.255.255.0",
"guestinfo.gateway": "172.16.11.1",
"guestinfo.dns": "172.16.11.4",
"guestinfo.domain": "example.com",
"guestinfo.ntp": "ntp.example.com",
"guestinfo.password": "VMware1!",
"guestinfo.ssh": "True",
},
})
package main
import (
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
datacenter, err := vsphere.LookupDatacenter(ctx, &vsphere.LookupDatacenterArgs{
Name: pulumi.StringRef("dc-01"),
}, nil)
if err != nil {
return err
}
datastore, err := vsphere.GetDatastore(ctx, &vsphere.GetDatastoreArgs{
Name: "datastore-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
cluster, err := vsphere.LookupComputeCluster(ctx, &vsphere.LookupComputeClusterArgs{
Name: "cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.LookupResourcePool(ctx, &vsphere.LookupResourcePoolArgs{
Name: pulumi.StringRef(std.Format(ctx, map[string]interface{}{
"input": "%s%s",
"args": []*string{
cluster.Name,
"/Resources",
},
}, nil).Result),
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.LookupHost(ctx, &vsphere.LookupHostArgs{
Name: pulumi.StringRef("esxi-01.example.com"),
DatacenterId: datacenter.Id,
}, nil)
if err != nil {
return err
}
network, err := vsphere.GetNetwork(ctx, &vsphere.GetNetworkArgs{
Name: "172.16.11.0",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
templateFromOvf, err := vsphere.LookupVirtualMachine(ctx, &vsphere.LookupVirtualMachineArgs{
Name: pulumi.StringRef("ubuntu-server-template-from-ova"),
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Name: pulumi.String("foo"),
ResourcePoolId: pulumi.String(cluster.ResourcePoolId),
DatastoreId: pulumi.String(datastore.Id),
NumCpus: pulumi.Int(2),
Memory: pulumi.Int(1024),
GuestId: pulumi.Any(template.GuestId),
ScsiType: pulumi.Any(template.ScsiType),
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.String(network.Id),
AdapterType: pulumi.Any(template.NetworkInterfaceTypes[0]),
},
},
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Name: "Hard Disk 1",
Size: pulumi.Int(templateFromOvf.Disks[0].Size),
ThinProvisioned: pulumi.Bool(templateFromOvf.Disks[0].ThinProvisioned),
},
},
Clone: &vsphere.VirtualMachineCloneArgs{
TemplateUuid: pulumi.String(templateFromOvf.Id),
},
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
"guestinfo.hostname": pulumi.String("foo.example.com"),
"guestinfo.ipaddress": pulumi.String("172.16.11.101"),
"guestinfo.netmask": pulumi.String("255.255.255.0"),
"guestinfo.gateway": pulumi.String("172.16.11.1"),
"guestinfo.dns": pulumi.String("172.16.11.4"),
"guestinfo.domain": pulumi.String("example.com"),
"guestinfo.ntp": pulumi.String("ntp.example.com"),
"guestinfo.password": pulumi.String("VMware1!"),
"guestinfo.ssh": pulumi.String("True"),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Std = Pulumi.Std;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastore = VSphere.GetDatastore.Invoke(new()
{
Name = "datastore-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var @default = VSphere.GetResourcePool.Invoke(new()
{
Name = Std.Index.Format.Invoke(new()
{
Input = "%s%s",
Args = new[]
{
cluster.Apply(getComputeClusterResult => getComputeClusterResult.Name),
"/Resources",
},
}).Result,
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var host = VSphere.GetHost.Invoke(new()
{
Name = "esxi-01.example.com",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "172.16.11.0",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var templateFromOvf = VSphere.GetVirtualMachine.Invoke(new()
{
Name = "ubuntu-server-template-from-ova",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var vm = new VSphere.VirtualMachine("vm", new()
{
Name = "foo",
ResourcePoolId = cluster.Apply(getComputeClusterResult => getComputeClusterResult.ResourcePoolId),
DatastoreId = datastore.Apply(getDatastoreResult => getDatastoreResult.Id),
NumCpus = 2,
Memory = 1024,
GuestId = template.GuestId,
ScsiType = template.ScsiType,
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = network.Apply(getNetworkResult => getNetworkResult.Id),
AdapterType = template.NetworkInterfaceTypes[0],
},
},
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Name = "Hard Disk 1",
Size = templateFromOvf.Apply(getVirtualMachineResult => getVirtualMachineResult.Disks[0]?.Size),
ThinProvisioned = templateFromOvf.Apply(getVirtualMachineResult => getVirtualMachineResult.Disks[0]?.ThinProvisioned),
},
},
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
TemplateUuid = templateFromOvf.Apply(getVirtualMachineResult => getVirtualMachineResult.Id),
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "guestinfo.hostname", "foo.example.com" },
{ "guestinfo.ipaddress", "172.16.11.101" },
{ "guestinfo.netmask", "255.255.255.0" },
{ "guestinfo.gateway", "172.16.11.1" },
{ "guestinfo.dns", "172.16.11.4" },
{ "guestinfo.domain", "example.com" },
{ "guestinfo.ntp", "ntp.example.com" },
{ "guestinfo.password", "VMware1!" },
{ "guestinfo.ssh", "True" },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetDatacenterArgs;
import com.pulumi.vsphere.inputs.GetDatastoreArgs;
import com.pulumi.vsphere.inputs.GetComputeClusterArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.vsphere.inputs.GetResourcePoolArgs;
import com.pulumi.vsphere.inputs.GetHostArgs;
import com.pulumi.vsphere.inputs.GetNetworkArgs;
import com.pulumi.vsphere.inputs.GetVirtualMachineArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineDiskArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVappArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var datacenter = VsphereFunctions.getDatacenter(GetDatacenterArgs.builder()
.name("dc-01")
.build());
final var datastore = VsphereFunctions.getDatastore(GetDatastoreArgs.builder()
.name("datastore-01")
.datacenterId(datacenter.id())
.build());
final var cluster = VsphereFunctions.getComputeCluster(GetComputeClusterArgs.builder()
.name("cluster-01")
.datacenterId(datacenter.id())
.build());
final var default = VsphereFunctions.getResourcePool(GetResourcePoolArgs.builder()
.name(StdFunctions.format(Map.ofEntries(
Map.entry("input", "%s%s"),
Map.entry("args",
cluster.name(),
"/Resources")
)).result())
.datacenterId(datacenter.id())
.build());
final var host = VsphereFunctions.getHost(GetHostArgs.builder()
.name("esxi-01.example.com")
.datacenterId(datacenter.id())
.build());
final var network = VsphereFunctions.getNetwork(GetNetworkArgs.builder()
.name("172.16.11.0")
.datacenterId(datacenter.id())
.build());
final var templateFromOvf = VsphereFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()
.name("ubuntu-server-template-from-ova")
.datacenterId(datacenter.id())
.build());
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.name("foo")
.resourcePoolId(cluster.resourcePoolId())
.datastoreId(datastore.id())
.numCpus(2)
.memory(1024)
.guestId(template.guestId())
.scsiType(template.scsiType())
.networkInterfaces(VirtualMachineNetworkInterfaceArgs.builder()
.networkId(network.id())
.adapterType(template.networkInterfaceTypes()[0])
.build())
.disks(VirtualMachineDiskArgs.builder()
.name("Hard Disk 1")
.size(templateFromOvf.disks()[0].size())
.thinProvisioned(templateFromOvf.disks()[0].thinProvisioned())
.build())
.clone(VirtualMachineCloneArgs.builder()
.templateUuid(templateFromOvf.id())
.build())
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.ofEntries(
Map.entry("guestinfo.hostname", "foo.example.com"),
Map.entry("guestinfo.ipaddress", "172.16.11.101"),
Map.entry("guestinfo.netmask", "255.255.255.0"),
Map.entry("guestinfo.gateway", "172.16.11.1"),
Map.entry("guestinfo.dns", "172.16.11.4"),
Map.entry("guestinfo.domain", "example.com"),
Map.entry("guestinfo.ntp", "ntp.example.com"),
Map.entry("guestinfo.password", "VMware1!"),
Map.entry("guestinfo.ssh", "True")
))
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
name: foo
resourcePoolId: ${cluster.resourcePoolId}
datastoreId: ${datastore.id}
numCpus: 2
memory: 1024
guestId: ${template.guestId}
scsiType: ${template.scsiType}
networkInterfaces:
- networkId: ${network.id}
adapterType: ${template.networkInterfaceTypes[0]}
disks:
- name: Hard Disk 1
size: ${templateFromOvf.disks[0].size}
thinProvisioned: ${templateFromOvf.disks[0].thinProvisioned}
clone:
templateUuid: ${templateFromOvf.id}
vapp:
properties:
guestinfo.hostname: foo.example.com
guestinfo.ipaddress: 172.16.11.101
guestinfo.netmask: 255.255.255.0
guestinfo.gateway: 172.16.11.1
guestinfo.dns: 172.16.11.4
guestinfo.domain: example.com
guestinfo.ntp: ntp.example.com
guestinfo.password: VMware1!
guestinfo.ssh: True
variables:
datacenter:
fn::invoke:
function: vsphere:getDatacenter
arguments:
name: dc-01
datastore:
fn::invoke:
function: vsphere:getDatastore
arguments:
name: datastore-01
datacenterId: ${datacenter.id}
cluster:
fn::invoke:
function: vsphere:getComputeCluster
arguments:
name: cluster-01
datacenterId: ${datacenter.id}
default:
fn::invoke:
function: vsphere:getResourcePool
arguments:
name:
fn::invoke:
function: std:format
arguments:
input: '%s%s'
args:
- ${cluster.name}
- /Resources
return: result
datacenterId: ${datacenter.id}
host:
fn::invoke:
function: vsphere:getHost
arguments:
name: esxi-01.example.com
datacenterId: ${datacenter.id}
network:
fn::invoke:
function: vsphere:getNetwork
arguments:
name: 172.16.11.0
datacenterId: ${datacenter.id}
templateFromOvf:
fn::invoke:
function: vsphere:getVirtualMachine
arguments:
name: ubuntu-server-template-from-ova
datacenterId: ${datacenter.id}
Using vSphere Storage DRS
The vsphere.VirtualMachine resource also supports vSphere Storage DRS, allowing the assignment of virtual machines to datastore clusters. When assigned to a datastore cluster, changes to a virtual machine’s underlying datastores are ignored unless disks drift outside of the datastore cluster. Note that the vsphere.DatastoreCluster resource also exists to allow for management of datastore clusters using the Terraform provider.
The following example demonstrates the use of the [vsphere.DatastoreCluster] data sourcetf-vsphere-datastore-cluster-data-source, and the datastore_cluster_id configuration setting.
NOTE: When managing datastore clusters, member datastores, and virtual machines within the same Terraform configuration, race conditions can apply. This is because datastore clusters must be created before datastores can be assigned to them, and the respective
vsphere.VirtualMachineresources will no longer have an implicit dependency on the specific datastore resources. Usedepends_onto create an explicit dependency on the datastores in the cluster, or manage datastore clusters and datastores in a separate configuration.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const datacenter = vsphere.getDatacenter({
name: "dc-01",
});
const datastoreCluster = datacenter.then(datacenter => vsphere.getDatastoreCluster({
name: "datastore-cluster-01",
datacenterId: datacenter.id,
}));
const cluster = datacenter.then(datacenter => vsphere.getComputeCluster({
name: "cluster-01",
datacenterId: datacenter.id,
}));
const network = datacenter.then(datacenter => vsphere.getNetwork({
name: "VM Network",
datacenterId: datacenter.id,
}));
const vm = new vsphere.VirtualMachine("vm", {
name: "foo",
resourcePoolId: cluster.then(cluster => cluster.resourcePoolId),
datastoreClusterId: datastoreCluster.then(datastoreCluster => datastoreCluster.id),
numCpus: 1,
memory: 1024,
guestId: "otherLinux64Guest",
networkInterfaces: [{
networkId: network.then(network => network.id),
}],
disks: [{
label: "Hard Disk 1",
size: 20,
}],
});
import pulumi
import pulumi_vsphere as vsphere
datacenter = vsphere.get_datacenter(name="dc-01")
datastore_cluster = vsphere.get_datastore_cluster(name="datastore-cluster-01",
datacenter_id=datacenter.id)
cluster = vsphere.get_compute_cluster(name="cluster-01",
datacenter_id=datacenter.id)
network = vsphere.get_network(name="VM Network",
datacenter_id=datacenter.id)
vm = vsphere.VirtualMachine("vm",
name="foo",
resource_pool_id=cluster.resource_pool_id,
datastore_cluster_id=datastore_cluster.id,
num_cpus=1,
memory=1024,
guest_id="otherLinux64Guest",
network_interfaces=[{
"network_id": network.id,
}],
disks=[{
"label": "Hard Disk 1",
"size": 20,
}])
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
datacenter, err := vsphere.LookupDatacenter(ctx, &vsphere.LookupDatacenterArgs{
Name: pulumi.StringRef("dc-01"),
}, nil)
if err != nil {
return err
}
datastoreCluster, err := vsphere.LookupDatastoreCluster(ctx, &vsphere.LookupDatastoreClusterArgs{
Name: "datastore-cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
cluster, err := vsphere.LookupComputeCluster(ctx, &vsphere.LookupComputeClusterArgs{
Name: "cluster-01",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
network, err := vsphere.GetNetwork(ctx, &vsphere.GetNetworkArgs{
Name: "VM Network",
DatacenterId: pulumi.StringRef(datacenter.Id),
}, nil)
if err != nil {
return err
}
_, err = vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Name: pulumi.String("foo"),
ResourcePoolId: pulumi.String(cluster.ResourcePoolId),
DatastoreClusterId: pulumi.String(datastoreCluster.Id),
NumCpus: pulumi.Int(1),
Memory: pulumi.Int(1024),
GuestId: pulumi.String("otherLinux64Guest"),
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.String(network.Id),
},
},
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Label: pulumi.String("Hard Disk 1"),
Size: pulumi.Int(20),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var datacenter = VSphere.GetDatacenter.Invoke(new()
{
Name = "dc-01",
});
var datastoreCluster = VSphere.GetDatastoreCluster.Invoke(new()
{
Name = "datastore-cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var cluster = VSphere.GetComputeCluster.Invoke(new()
{
Name = "cluster-01",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var network = VSphere.GetNetwork.Invoke(new()
{
Name = "VM Network",
DatacenterId = datacenter.Apply(getDatacenterResult => getDatacenterResult.Id),
});
var vm = new VSphere.VirtualMachine("vm", new()
{
Name = "foo",
ResourcePoolId = cluster.Apply(getComputeClusterResult => getComputeClusterResult.ResourcePoolId),
DatastoreClusterId = datastoreCluster.Apply(getDatastoreClusterResult => getDatastoreClusterResult.Id),
NumCpus = 1,
Memory = 1024,
GuestId = "otherLinux64Guest",
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = network.Apply(getNetworkResult => getNetworkResult.Id),
},
},
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Label = "Hard Disk 1",
Size = 20,
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VsphereFunctions;
import com.pulumi.vsphere.inputs.GetDatacenterArgs;
import com.pulumi.vsphere.inputs.GetDatastoreClusterArgs;
import com.pulumi.vsphere.inputs.GetComputeClusterArgs;
import com.pulumi.vsphere.inputs.GetNetworkArgs;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineDiskArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var datacenter = VsphereFunctions.getDatacenter(GetDatacenterArgs.builder()
.name("dc-01")
.build());
final var datastoreCluster = VsphereFunctions.getDatastoreCluster(GetDatastoreClusterArgs.builder()
.name("datastore-cluster-01")
.datacenterId(datacenter.id())
.build());
final var cluster = VsphereFunctions.getComputeCluster(GetComputeClusterArgs.builder()
.name("cluster-01")
.datacenterId(datacenter.id())
.build());
final var network = VsphereFunctions.getNetwork(GetNetworkArgs.builder()
.name("VM Network")
.datacenterId(datacenter.id())
.build());
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.name("foo")
.resourcePoolId(cluster.resourcePoolId())
.datastoreClusterId(datastoreCluster.id())
.numCpus(1)
.memory(1024)
.guestId("otherLinux64Guest")
.networkInterfaces(VirtualMachineNetworkInterfaceArgs.builder()
.networkId(network.id())
.build())
.disks(VirtualMachineDiskArgs.builder()
.label("Hard Disk 1")
.size(20)
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
name: foo
resourcePoolId: ${cluster.resourcePoolId}
datastoreClusterId: ${datastoreCluster.id}
numCpus: 1
memory: 1024
guestId: otherLinux64Guest
networkInterfaces:
- networkId: ${network.id}
disks:
- label: Hard Disk 1
size: 20
variables:
datacenter:
fn::invoke:
function: vsphere:getDatacenter
arguments:
name: dc-01
datastoreCluster:
fn::invoke:
function: vsphere:getDatastoreCluster
arguments:
name: datastore-cluster-01
datacenterId: ${datacenter.id}
cluster:
fn::invoke:
function: vsphere:getComputeCluster
arguments:
name: cluster-01
datacenterId: ${datacenter.id}
network:
fn::invoke:
function: vsphere:getNetwork
arguments:
name: VM Network
datacenterId: ${datacenter.id}
Creating a Virtual Machine from a Template
The clone block can be used to create a new virtual machine from an existing virtual machine or template. The resource supports both making a complete copy of a virtual machine, or cloning from a snapshot (also known as a linked clone).
See the section on cloning and customization for more information.
NOTE: Changing any option in
cloneafter creation forces a new resource.
NOTE: Cloning requires vCenter Server and is not supported on direct ESXi host connections.
The options available in the clone block are:
template_uuid- (Required) The UUID of the source virtual machine or template.linked_clone- (Optional) Clone the virtual machine from a snapshot or a template. Default:false.timeout- (Optional) The timeout, in minutes, to wait for the cloning process to complete. Default: 30 minutes.customize- (Optional) The customization spec for this clone. This allows the user to configure the virtual machine post-clone. For more details, see virtual machine customizations.
Virtual Machine Customizations
As part of the clone operation, a virtual machine can be customized to configure host, network, or licensing settings.
To perform virtual machine customization as a part of the clone process,
specify the customize block with the respective customization options, nested within the clone block. Windows guests are customized using Sysprep, which will result in the machine SID being reset. Before using customization, check is that your source virtual machine meets the requirements for guest OS customization on vSphere. See the section on cloning and customization for a usage synopsis.
The settings for customize are as follows:
Customization Timeout Settings
timeout- (Optional) The time, in minutes, that the provider waits for customization to complete before failing. The default is10minutes. Setting the value to0or a negative value disables the waiter.
Network Interface Settings
These settings, which should be specified in nested network_interface blocks within customize block, configure network interfaces on a per-interface basis and are matched up to network_interface devices in the order declared.
Static IP Address Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {
networkInterfaces: [
{
networkId: _public.id,
},
{
networkId: _private.id,
},
],
clone: {
customize: {
networkInterfaces: [
{
ipv4Address: "10.0.0.10",
ipv4Netmask: 24,
},
{
ipv4Address: "172.16.0.10",
ipv4Netmask: 24,
},
],
ipv4Gateway: "10.0.0.1",
},
},
});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm",
network_interfaces=[
{
"network_id": public["id"],
},
{
"network_id": private["id"],
},
],
clone={
"customize": {
"network_interfaces": [
{
"ipv4_address": "10.0.0.10",
"ipv4_netmask": 24,
},
{
"ipv4_address": "172.16.0.10",
"ipv4_netmask": 24,
},
],
"ipv4_gateway": "10.0.0.1",
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.Any(public.Id),
},
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.Any(private.Id),
},
},
Clone: &vsphere.VirtualMachineCloneArgs{
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
NetworkInterfaces: vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArray{
&vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArgs{
Ipv4Address: pulumi.String("10.0.0.10"),
Ipv4Netmask: pulumi.Int(24),
},
&vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArgs{
Ipv4Address: pulumi.String("172.16.0.10"),
Ipv4Netmask: pulumi.Int(24),
},
},
Ipv4Gateway: pulumi.String("10.0.0.1"),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = @public.Id,
},
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = @private.Id,
},
},
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineCloneCustomizeNetworkInterfaceArgs
{
Ipv4Address = "10.0.0.10",
Ipv4Netmask = 24,
},
new VSphere.Inputs.VirtualMachineCloneCustomizeNetworkInterfaceArgs
{
Ipv4Address = "172.16.0.10",
Ipv4Netmask = 24,
},
},
Ipv4Gateway = "10.0.0.1",
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.networkInterfaces(
VirtualMachineNetworkInterfaceArgs.builder()
.networkId(public_.id())
.build(),
VirtualMachineNetworkInterfaceArgs.builder()
.networkId(private_.id())
.build())
.clone(VirtualMachineCloneArgs.builder()
.customize(VirtualMachineCloneCustomizeArgs.builder()
.networkInterfaces(
VirtualMachineCloneCustomizeNetworkInterfaceArgs.builder()
.ipv4Address("10.0.0.10")
.ipv4Netmask(24)
.build(),
VirtualMachineCloneCustomizeNetworkInterfaceArgs.builder()
.ipv4Address("172.16.0.10")
.ipv4Netmask(24)
.build())
.ipv4Gateway("10.0.0.1")
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
networkInterfaces:
- networkId: ${public.id}
- networkId: ${private.id}
clone:
customize:
networkInterfaces:
- ipv4Address: 10.0.0.10
ipv4Netmask: 24
- ipv4Address: 172.16.0.10
ipv4Netmask: 24
ipv4Gateway: 10.0.0.1
The first network_interface would be assigned to the public interface, and the second to the private interface.
To use DHCP, declare an empty network_interface block for each interface.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {
networkInterfaces: [
{
networkId: _public.id,
},
{
networkId: _private.id,
},
],
clone: {
customize: {
networkInterfaces: [
{},
{},
],
},
},
});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm",
network_interfaces=[
{
"network_id": public["id"],
},
{
"network_id": private["id"],
},
],
clone={
"customize": {
"network_interfaces": [
{},
{},
],
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.Any(public.Id),
},
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.Any(private.Id),
},
},
Clone: &vsphere.VirtualMachineCloneArgs{
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
NetworkInterfaces: vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArray{
&vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArgs{},
&vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArgs{},
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = @public.Id,
},
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = @private.Id,
},
},
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
NetworkInterfaces = new[]
{
null,
null,
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineNetworkInterfaceArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.networkInterfaces(
VirtualMachineNetworkInterfaceArgs.builder()
.networkId(public_.id())
.build(),
VirtualMachineNetworkInterfaceArgs.builder()
.networkId(private_.id())
.build())
.clone(VirtualMachineCloneArgs.builder()
.customize(VirtualMachineCloneCustomizeArgs.builder()
.networkInterfaces(
VirtualMachineCloneCustomizeNetworkInterfaceArgs.builder()
.build(),
VirtualMachineCloneCustomizeNetworkInterfaceArgs.builder()
.build())
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
networkInterfaces:
- networkId: ${public.id}
- networkId: ${private.id}
clone:
customize:
networkInterfaces:
- {}
- {}
The options are:
dns_server_list- (Optional) DNS servers for the network interface. Used by Windows guest operating systems, but ignored by Linux distribution guest operating systems. For Linux, please refer to the section on the global DNS settings.dns_domain- (Optional) DNS search domain for the network interface. Used by Windows guest operating systems, but ignored by Linux distribution guest operating systems. For Linux, please refer to the section on the global DNS settings.ipv4_address- (Optional) The IPv4 address assigned to the network adapter. If blank or not included, DHCP is used.ipv4_netmaskThe IPv4 subnet mask, in bits (e.g.24for 255.255.255.0).ipv6_address- (Optional) The IPv6 address assigned to the network adapter. If blank or not included, auto-configuration is used.ipv6_netmask- (Optional) The IPv6 subnet mask, in bits (e.g.32).
NOTE: The minimum setting for IPv4 in a customization specification is DHCP. If you are setting up an IPv6-exclusive network without DHCP, you may need to set
wait_for_guest_net_timeoutto a high enough value to cover the DHCP timeout of your virtual machine, or disable by supplying a zero or negative value. Disablingwait_for_guest_net_timeoutmay result in IP addresses not being reported to any provisioners you may have configured on the resource.
Global Routing Settings
Virtual machine customization for the vsphere.VirtualMachine resource does not take a per-interface gateway setting. Default routes are configured on a global basis. See the section on network interface settings for more information.
The settings must match the IP address and netmask of at least one network_interface supplied to customization.
The options are:
ipv4_gateway- (Optional) The IPv4 default gateway when usingnetwork_interfacecustomization on the virtual machine.ipv6_gateway- (Optional) The IPv6 default gateway when usingnetwork_interfacecustomization on the virtual machine.
Global DNS Settings
The following settings configure DNS globally, generally for Linux distribution guest operating systems. For Windows guest operating systems, this is performer per-interface. See the section on network interface settings for more information.
dns_server_list- The list of DNS servers to configure on the virtual machine.dns_suffix_list- A list of DNS search domains to add to the DNS configuration on the virtual machine.
Linux Customization Options
The settings in the linux_options block pertain to Linux distribution guest operating system customization. If you are customizing a Linux guest operating system, this section must be included.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {clone: {
customize: {
linuxOptions: {
hostName: "foo",
domain: "example.com",
},
},
}});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm", clone={
"customize": {
"linux_options": {
"host_name": "foo",
"domain": "example.com",
},
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Clone: &vsphere.VirtualMachineCloneArgs{
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
LinuxOptions: &vsphere.VirtualMachineCloneCustomizeLinuxOptionsArgs{
HostName: pulumi.String("foo"),
Domain: pulumi.String("example.com"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
LinuxOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeLinuxOptionsArgs
{
HostName = "foo",
Domain = "example.com",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeLinuxOptionsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.clone(VirtualMachineCloneArgs.builder()
.customize(VirtualMachineCloneCustomizeArgs.builder()
.linuxOptions(VirtualMachineCloneCustomizeLinuxOptionsArgs.builder()
.hostName("foo")
.domain("example.com")
.build())
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
clone:
customize:
linuxOptions:
hostName: foo
domain: example.com
The options are:
host_name- (Required) The host name for this machine. This, along withdomain, make up the FQDN of the virtual machine.domain- (Required) The domain name for this machine. This, along withhost_name, make up the FQDN of the virtual machine.hw_clock_utc- (Optional) Tells the operating system that the hardware clock is set to UTC. Default:true.script_text- (Optional) The customization script for the virtual machine that will be applied before and / or after guest customization. For more information on enabling and using a customization script, please refer to VMware KB 74880. The Heredoc style of string literal is recommended.
time_zone- (Optional) Sets the time zone. For a list of possible combinations, please refer to VMware KB 2145518. The default is UTC.
Windows Customization Options
The settings in the windows_options block pertain to Windows guest OS customization. If you are customizing a Windows operating system, this section must be included.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {clone: {
customize: {
windowsOptions: {
computerName: "foo",
workgroup: "BAR",
adminPassword: "VMware1!",
},
},
}});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm", clone={
"customize": {
"windows_options": {
"computer_name": "foo",
"workgroup": "BAR",
"admin_password": "VMware1!",
},
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Clone: &vsphere.VirtualMachineCloneArgs{
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
WindowsOptions: &vsphere.VirtualMachineCloneCustomizeWindowsOptionsArgs{
ComputerName: pulumi.String("foo"),
Workgroup: pulumi.String("BAR"),
AdminPassword: pulumi.String("VMware1!"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
WindowsOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeWindowsOptionsArgs
{
ComputerName = "foo",
Workgroup = "BAR",
AdminPassword = "VMware1!",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeWindowsOptionsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.clone(VirtualMachineCloneArgs.builder()
.customize(VirtualMachineCloneCustomizeArgs.builder()
.windowsOptions(VirtualMachineCloneCustomizeWindowsOptionsArgs.builder()
.computerName("foo")
.workgroup("BAR")
.adminPassword("VMware1!")
.build())
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
clone:
customize:
windowsOptions:
computerName: foo
workgroup: BAR
adminPassword: VMware1!
The options are:
computer_name- (Required) The computer name of the virtual machine.admin_password- (Optional) The administrator password for the virtual machine.
NOTE:
admin_passwordis a sensitive field and will not be output on-screen, but is stored in state and sent to the virtual machine in plain text.
workgroup- (Optional) The workgroup name for the virtual machine. One of this orjoin_domainmust be included.join_domain- (Optional) The domain name in which to join the virtual machine. One of this orworkgroupmust be included.domain_ou- (Optional) TheMachineObjectOUwhich specifies the full LDAP path name of the OU to which the virtual machine belongs (e.g., OU=bar,OU=foo,DC=example,DC=com").
NOTE:
domain_ouis only available on vSphere 8.0 Update 2 and later.
NOTE:
domain_oumust not contain a spaces in theMachineObjectOUpath (e.g., OU=foo bar,DC=example,DC=com").
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {clone: {
customize: {
windowsOptions: {
domainOu: "OU=bar,OU=foo,DC=example,DC=com",
},
},
}});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm", clone={
"customize": {
"windows_options": {
"domain_ou": "OU=bar,OU=foo,DC=example,DC=com",
},
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Clone: &vsphere.VirtualMachineCloneArgs{
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
WindowsOptions: &vsphere.VirtualMachineCloneCustomizeWindowsOptionsArgs{
DomainOu: pulumi.String("OU=bar,OU=foo,DC=example,DC=com"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
WindowsOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeWindowsOptionsArgs
{
DomainOu = "OU=bar,OU=foo,DC=example,DC=com",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneCustomizeWindowsOptionsArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.clone(VirtualMachineCloneArgs.builder()
.customize(VirtualMachineCloneCustomizeArgs.builder()
.windowsOptions(VirtualMachineCloneCustomizeWindowsOptionsArgs.builder()
.domainOu("OU=bar,OU=foo,DC=example,DC=com")
.build())
.build())
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
clone:
customize:
windowsOptions:
domainOu: OU=bar,OU=foo,DC=example,DC=com
domain_admin_user- (Optional) The user account with administrative privileges to use to join the guest operating system to the domain. Required if settingjoin_domain.domain_admin_password- (Optional) The password user account with administrative privileges used to join the virtual machine to the domain. Required if settingjoin_domain.
NOTE:
domain_admin_passwordis a sensitive field and will not be output on-screen, but is stored in state and sent to the virtual machine in plain text
full_name- (Optional) The full name of the organization owner of the virtual machine. This populates the “user” field in the general Windows system information. Default:Administrator.organization_name- (Optional) The name of the organization for the virtual machine. This option populates the “organization” field in the general Windows system information. Default:Managed by Terraform.product_key- (Optional) The product key for the virtual machine Windows guest operating system. The default is no key.run_once_command_list- (Optional) A list of commands to run at first user logon, after guest customization. Each run once command is limited by the API to 260 characters.auto_logon- (Optional) Specifies whether or not the virtual machine automatically logs on as Administrator. Default:false.auto_logon_count- (Optional) Specifies how many times the virtual machine should auto-logon the Administrator account whenauto_logonistrue. This option should be set accordingly to ensure that all of your commands that run inrun_once_command_listcan log in to run. Default:1.time_zone- (Optional) The time zone for the virtual machine. For a list of supported codes, please refer to the MIcrosoft documentation. The default is85(GMT/UTC).
Using vApp Properties for OVF/OVA Configuration
You can use the properties section of the vapp block to supply configuration parameters to a virtual machine cloned from a template that originated from an imported OVF/OVA file. Both GuestInfo and ISO transport methods are supported.
For templates that use ISO transport, a CD-ROM backed by a client device must be included.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {
clone: {
templateUuid: templateFromOvf.id,
},
cdroms: [{
clientDevice: true,
}],
vapp: {
properties: {
[terraform.id]: "foo",
},
},
});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm",
clone={
"template_uuid": template_from_ovf["id"],
},
cdroms=[{
"client_device": True,
}],
vapp={
"properties": {
terraform["id"]: "foo",
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Clone: &vsphere.VirtualMachineCloneArgs{
TemplateUuid: pulumi.Any(templateFromOvf.Id),
},
Cdroms: vsphere.VirtualMachineCdromArray{
&vsphere.VirtualMachineCdromArgs{
ClientDevice: pulumi.Bool(true),
},
},
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
terraform.Id: "foo",
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
TemplateUuid = templateFromOvf.Id,
},
Cdroms = new[]
{
new VSphere.Inputs.VirtualMachineCdromArgs
{
ClientDevice = true,
},
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ terraform.Id, "foo" },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCdromArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVappArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.clone(VirtualMachineCloneArgs.builder()
.templateUuid(templateFromOvf.id())
.build())
.cdroms(VirtualMachineCdromArgs.builder()
.clientDevice(true)
.build())
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.of(terraform.id(), "foo"))
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
clone:
templateUuid: ${templateFromOvf.id}
cdroms:
- clientDevice: true
vapp:
properties:
${terraform.id}: foo
See the section on CD-ROM options for more information.
NOTE: The only supported usage path for vApp properties is for existing user-configurable keys. These generally come from an existing template created by importing an OVF or OVA file. You cannot set values for vApp properties on virtual machines created from scratch, virtual machines lacking a vApp configuration, or on property keys that do not exist.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {
clone: {
templateUuid: templateFromOvf.id,
},
vapp: {
properties: {
[terraform.id]: "foo",
},
},
});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm",
clone={
"template_uuid": template_from_ovf["id"],
},
vapp={
"properties": {
terraform["id"]: "foo",
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Clone: &vsphere.VirtualMachineCloneArgs{
TemplateUuid: pulumi.Any(templateFromOvf.Id),
},
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
terraform.Id: "foo",
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
TemplateUuid = templateFromOvf.Id,
},
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ terraform.Id, "foo" },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineCloneArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVappArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.clone(VirtualMachineCloneArgs.builder()
.templateUuid(templateFromOvf.id())
.build())
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.of(terraform.id(), "foo"))
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
clone:
templateUuid: ${templateFromOvf.id}
vapp:
properties:
${terraform.id}: foo
The vApp Properties for some OVF/OVA may require boolean values.
In Terraform a boolean is defined as bool with a value of either true or false.
Example: A boolean variable type for the Terraform provider configuration.
import * as pulumi from "@pulumi/pulumi";
const config = new pulumi.Config();
// Allow insecure connections. Set to `true` for self-signed certificates.
const vsphereInsecure = config.getBoolean("vsphereInsecure") || false;
import pulumi
config = pulumi.Config()
# Allow insecure connections. Set to `true` for self-signed certificates.
vsphere_insecure = config.get_bool("vsphereInsecure")
if vsphere_insecure is None:
vsphere_insecure = False
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
// Allow insecure connections. Set to `true` for self-signed certificates.
vsphereInsecure := false
if param := cfg.GetBool("vsphereInsecure"); param {
vsphereInsecure = param
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
return await Deployment.RunAsync(() =>
{
var config = new Config();
// Allow insecure connections. Set to `true` for self-signed certificates.
var vsphereInsecure = config.GetBoolean("vsphereInsecure") ?? false;
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var vsphereInsecure = config.get("vsphereInsecure").orElse(false);
}
}
configuration:
vsphereInsecure:
type: bool
default: false
However, for OVF properties, even though the type is boolean, the vApp Options in vSphere only accepts the values of "True" or "False".
In these instances, it is recommended to define the variable as a string and pass the value in title case.
Example: A string variable for to pass to an OVF/OVA boolean OVF property.
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const config = new pulumi.Config();
// Enable SSH on the virtual appliance. One of `True` or `False`.
const sshEnabled = config.get("sshEnabled") || "False";
const vm = new vsphere.VirtualMachine("vm", {vapp: {
properties: {
ssh_enabled: sshEnabled,
},
}});
import pulumi
import pulumi_vsphere as vsphere
config = pulumi.Config()
# Enable SSH on the virtual appliance. One of `True` or `False`.
ssh_enabled = config.get("sshEnabled")
if ssh_enabled is None:
ssh_enabled = "False"
vm = vsphere.VirtualMachine("vm", vapp={
"properties": {
"ssh_enabled": ssh_enabled,
},
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
// Enable SSH on the virtual appliance. One of `True` or `False`.
sshEnabled := "False"
if param := cfg.Get("sshEnabled"); param != "" {
sshEnabled = param
}
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
"ssh_enabled": pulumi.String(sshEnabled),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var config = new Config();
// Enable SSH on the virtual appliance. One of `True` or `False`.
var sshEnabled = config.Get("sshEnabled") ?? "False";
var vm = new VSphere.VirtualMachine("vm", new()
{
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "ssh_enabled", sshEnabled },
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVappArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var sshEnabled = config.get("sshEnabled").orElse("False");
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.of("ssh_enabled", sshEnabled))
.build())
.build());
}
}
configuration:
sshEnabled:
type: string
default: False
resources:
vm:
type: vsphere:VirtualMachine
properties:
vapp:
properties:
ssh_enabled: ${sshEnabled}
Additional Requirements for Cloning
When cloning from a template, there are additional requirements in both the resource configuration and source template:
- The virtual machine must not be powered on at the time of cloning.
- All disks on the virtual machine must be SCSI disks.
- You must specify at least the same number of
diskdevices as there are disks that exist in the template. These devices are ordered and lined up by theunit_numberattribute. Additional disks can be added past this. - The
sizeof a virtual disk must be at least the same size as its counterpart disk in the source template. - When using
linked_clone, thesize,thin_provisioned, andeagerly_scrubsettings for each disk must be an exact match to the individual disk’s counterpart in the source template. - The storage controller count settings should be configured as necessary to cover all of the disks on the template. For best results, only configure this setting for the number of controllers you will need to cover your disk quantity and bandwidth needs, and configure your template accordingly. For most workloads, this setting should be kept at the default of
1SCSI controller, and all disks in the template should reside on the single, primary controller. - Some operating systems do not respond well to a change in disk controller type. Ensure that
scsi_typeis set to an exact match of the template’s controller set. For maximum compatibility, make sure the SCSI controllers on the source template are all the same type.
You can use the vsphere.VirtualMachine data source, which provides disk attributes, network interface types, SCSI bus types, and the guest ID of the source template, to return this information. See the section on cloning and customization for more information.
Trusted Platform Module
When creating a virtual machine or cloning one from a template, you have the option to add a virtual Trusted Platform Module device. Refer to the requirements in the VMware vSphere product documentation.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {vtpm: {
version: "2.0",
}});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm", vtpm={
"version": "2.0",
})
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
Vtpm: &vsphere.VirtualMachineVtpmArgs{
Version: pulumi.String("2.0"),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
Vtpm = new VSphere.Inputs.VirtualMachineVtpmArgs
{
Version = "2.0",
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineVtpmArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.vtpm(VirtualMachineVtpmArgs.builder()
.version("2.0")
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
vtpm:
version: '2.0'
NOTE: Supported versions include 1.2 or 2.0.
Virtual Machine Migration
The vsphere.VirtualMachine resource supports live migration both on the host and storage level. You can migrate the virtual machine to another host, cluster, resource pool, or datastore. You can also migrate or pin a virtual disk to a specific datastore.
Host, Cluster, and Resource Pool Migration
To migrate the virtual machine to another host or resource pool, change the host_system_id or resource_pool_id to the managed object IDs of the new host or resource pool. To change the virtual machine’s cluster or standalone host, select a resource pool within the specific target.
The same rules apply for migration as they do for virtual machine creation - any host specified must contribute the resource pool supplied. When moving a virtual machine to a resource pool in another cluster (or standalone host), ensure that all hosts in the cluster (or the single standalone host) have access to the datastore on which the virtual machine is placed.
Storage Migration
Storage migration can be done on two levels:
- Global datastore migration can be handled by changing the global
datastore_idattribute. This triggers a storage migration for all disks that do not have an explicitdatastore_idspecified. - When using Storage DRS through the
datastore_cluster_idattribute, the entire virtual machine can be migrated from one datastore cluster to another by changing the value of this setting. In addition, whendatastore_cluster_idis in use, any disks that drift to datastores outside of the datastore cluster via such actions as manual modification will be migrated back to the datastore cluster on the next apply. - An individual
diskdevice can be migrated by manually specifying thedatastore_idin its configuration block. This also pins it to the specific datastore that is specified - if at a later time the virtual machine and any unpinned disks migrate to another host, the disk will stay on the specified datastore.
An example of datastore pinning is below. As long as the datastore in the pinned_datastore data source does not change, any change to the standard vm_datastore data source will not affect the data disk - the disk will stay where it is.
Example:
import * as pulumi from "@pulumi/pulumi";
import * as vsphere from "@pulumi/vsphere";
const vm = new vsphere.VirtualMachine("vm", {
datastoreId: vmDatastore.id,
disks: [
{
label: "Hard Disk 1",
size: 10,
},
{
datastoreId: pinnedDatastore.id,
label: "Hard Disk 2",
size: 100,
unitNumber: 1,
},
],
});
import pulumi
import pulumi_vsphere as vsphere
vm = vsphere.VirtualMachine("vm",
datastore_id=vm_datastore["id"],
disks=[
{
"label": "Hard Disk 1",
"size": 10,
},
{
"datastore_id": pinned_datastore["id"],
"label": "Hard Disk 2",
"size": 100,
"unit_number": 1,
},
])
package main
import (
"github.com/pulumi/pulumi-vsphere/sdk/v4/go/vsphere"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vsphere.NewVirtualMachine(ctx, "vm", &vsphere.VirtualMachineArgs{
DatastoreId: pulumi.Any(vmDatastore.Id),
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Label: pulumi.String("Hard Disk 1"),
Size: pulumi.Int(10),
},
&vsphere.VirtualMachineDiskArgs{
DatastoreId: pulumi.Any(pinnedDatastore.Id),
Label: pulumi.String("Hard Disk 2"),
Size: pulumi.Int(100),
UnitNumber: pulumi.Int(1),
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using VSphere = Pulumi.VSphere;
return await Deployment.RunAsync(() =>
{
var vm = new VSphere.VirtualMachine("vm", new()
{
DatastoreId = vmDatastore.Id,
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Label = "Hard Disk 1",
Size = 10,
},
new VSphere.Inputs.VirtualMachineDiskArgs
{
DatastoreId = pinnedDatastore.Id,
Label = "Hard Disk 2",
Size = 100,
UnitNumber = 1,
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vsphere.VirtualMachine;
import com.pulumi.vsphere.VirtualMachineArgs;
import com.pulumi.vsphere.inputs.VirtualMachineDiskArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new VirtualMachine("vm", VirtualMachineArgs.builder()
.datastoreId(vmDatastore.id())
.disks(
VirtualMachineDiskArgs.builder()
.label("Hard Disk 1")
.size(10)
.build(),
VirtualMachineDiskArgs.builder()
.datastoreId(pinnedDatastore.id())
.label("Hard Disk 2")
.size(100)
.unitNumber(1)
.build())
.build());
}
}
resources:
vm:
type: vsphere:VirtualMachine
properties:
datastoreId: ${vmDatastore.id}
disks:
- label: Hard Disk 1
size: 10
- datastoreId: ${pinnedDatastore.id}
label: Hard Disk 2
size: 100
unitNumber: 1
Storage Migration Restrictions
You cannot migrate external disks added with the attach parameter. Typically, these disks are created and assigned to a datastore outside the scope of the vsphere.VirtualMachine resource. For example, using the vsphere.VirtualDisk resource, management of the disks would render their configuration unstable.
Virtual Machine Reboot
The virtual machine will be rebooted if any of the following parameters are changed:
alternate_guest_namecpu_hot_add_enabledcpu_hot_remove_enabledcpu_performance_counters_enableddisk.controller_typedisk.unit_numberdisk.disk_modedisk.write_throughdisk.disk_sharingefi_secure_boot_enabledept_rvi_modeenable_disk_uuidenable_loggingextra_configfirmwareguest_idhardware_versionhv_modememory- When reducing the memory size, or when increasing the memory size andmemory_hot_add_enabledis set tofalsememory_hot_add_enablednested_hv_enablednetwork_interface- When deleting a network interface and VMware Tools is not running.network_interface.adapter_type- When VMware Tools is not running.num_cores_per_socketpci_device_idrun_tools_scripts_after_power_onrun_tools_scripts_after_resumerun_tools_scripts_before_guest_standbyrun_tools_scripts_before_guest_shutdownrun_tools_scripts_before_guest_rebootswap_placement_policytools_upgrade_policyvbs_enabledvvtd_enabledvtpm
Migrating from a Previous Version of the Resource
NOTE: This section only applies this resource available in v0.4.2 or earlier of this provider.
The path for migrating to the current version of this resource is very similar to the import path; however, with the exception that the pulumi import command does not need to be run. See that section for details on what is required before you run pulumi preview on a provider resource that must be migrated.
A successful migration usually only results in a configuration-only diff - that is, Terraform reconciles the configuration settings that can not be set during the migration process with he Terraform state. In this event, no reconfiguration operations are sent to vSphere during the next pulumi up. For more information, see the importing section.
Create VirtualMachine Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new VirtualMachine(name: string, args: VirtualMachineArgs, opts?: CustomResourceOptions);@overload
def VirtualMachine(resource_name: str,
args: VirtualMachineArgs,
opts: Optional[ResourceOptions] = None)
@overload
def VirtualMachine(resource_name: str,
opts: Optional[ResourceOptions] = None,
resource_pool_id: Optional[str] = None,
alternate_guest_name: Optional[str] = None,
annotation: Optional[str] = None,
boot_delay: Optional[int] = None,
boot_retry_delay: Optional[int] = None,
boot_retry_enabled: Optional[bool] = None,
cdroms: Optional[Sequence[VirtualMachineCdromArgs]] = None,
clone: Optional[VirtualMachineCloneArgs] = None,
cpu_hot_add_enabled: Optional[bool] = None,
cpu_hot_remove_enabled: Optional[bool] = None,
cpu_limit: Optional[int] = None,
cpu_performance_counters_enabled: Optional[bool] = None,
cpu_reservation: Optional[int] = None,
cpu_share_count: Optional[int] = None,
cpu_share_level: Optional[str] = None,
custom_attributes: Optional[Mapping[str, str]] = None,
datacenter_id: Optional[str] = None,
datastore_cluster_id: Optional[str] = None,
datastore_id: Optional[str] = None,
disks: Optional[Sequence[VirtualMachineDiskArgs]] = None,
efi_secure_boot_enabled: Optional[bool] = None,
enable_disk_uuid: Optional[bool] = None,
enable_logging: Optional[bool] = None,
ept_rvi_mode: Optional[str] = None,
extra_config: Optional[Mapping[str, str]] = None,
extra_config_reboot_required: Optional[bool] = None,
firmware: Optional[str] = None,
folder: Optional[str] = None,
force_power_off: Optional[bool] = None,
guest_id: Optional[str] = None,
hardware_version: Optional[int] = None,
host_system_id: Optional[str] = None,
hv_mode: Optional[str] = None,
ide_controller_count: Optional[int] = None,
ignored_guest_ips: Optional[Sequence[str]] = None,
latency_sensitivity: Optional[str] = None,
memory: Optional[int] = None,
memory_hot_add_enabled: Optional[bool] = None,
memory_limit: Optional[int] = None,
memory_reservation: Optional[int] = None,
memory_reservation_locked_to_max: Optional[bool] = None,
memory_share_count: Optional[int] = None,
memory_share_level: Optional[str] = None,
migrate_wait_timeout: Optional[int] = None,
name: Optional[str] = None,
nested_hv_enabled: Optional[bool] = None,
network_interfaces: Optional[Sequence[VirtualMachineNetworkInterfaceArgs]] = None,
num_cores_per_socket: Optional[int] = None,
num_cpus: Optional[int] = None,
nvme_controller_count: Optional[int] = None,
ovf_deploy: Optional[VirtualMachineOvfDeployArgs] = None,
pci_device_ids: Optional[Sequence[str]] = None,
poweron_timeout: Optional[int] = None,
replace_trigger: Optional[str] = None,
run_tools_scripts_after_power_on: Optional[bool] = None,
run_tools_scripts_after_resume: Optional[bool] = None,
run_tools_scripts_before_guest_reboot: Optional[bool] = None,
run_tools_scripts_before_guest_shutdown: Optional[bool] = None,
run_tools_scripts_before_guest_standby: Optional[bool] = None,
sata_controller_count: Optional[int] = None,
scsi_bus_sharing: Optional[str] = None,
scsi_controller_count: Optional[int] = None,
scsi_type: Optional[str] = None,
shutdown_wait_timeout: Optional[int] = None,
storage_policy_id: Optional[str] = None,
swap_placement_policy: Optional[str] = None,
sync_time_with_host: Optional[bool] = None,
sync_time_with_host_periodically: Optional[bool] = None,
tags: Optional[Sequence[str]] = None,
tools_upgrade_policy: Optional[str] = None,
vapp: Optional[VirtualMachineVappArgs] = None,
vbs_enabled: Optional[bool] = None,
vtpm: Optional[VirtualMachineVtpmArgs] = None,
vvtd_enabled: Optional[bool] = None,
wait_for_guest_ip_timeout: Optional[int] = None,
wait_for_guest_net_routable: Optional[bool] = None,
wait_for_guest_net_timeout: Optional[int] = None)func NewVirtualMachine(ctx *Context, name string, args VirtualMachineArgs, opts ...ResourceOption) (*VirtualMachine, error)public VirtualMachine(string name, VirtualMachineArgs args, CustomResourceOptions? opts = null)
public VirtualMachine(String name, VirtualMachineArgs args)
public VirtualMachine(String name, VirtualMachineArgs args, CustomResourceOptions options)
type: vsphere:VirtualMachine
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args VirtualMachineArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args VirtualMachineArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args VirtualMachineArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args VirtualMachineArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args VirtualMachineArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var virtualMachineResource = new VSphere.VirtualMachine("virtualMachineResource", new()
{
ResourcePoolId = "string",
AlternateGuestName = "string",
Annotation = "string",
BootDelay = 0,
BootRetryDelay = 0,
BootRetryEnabled = false,
Cdroms = new[]
{
new VSphere.Inputs.VirtualMachineCdromArgs
{
ClientDevice = false,
DatastoreId = "string",
DeviceAddress = "string",
Key = 0,
Path = "string",
},
},
Clone = new VSphere.Inputs.VirtualMachineCloneArgs
{
TemplateUuid = "string",
CustomizationSpec = new VSphere.Inputs.VirtualMachineCloneCustomizationSpecArgs
{
Id = "string",
Timeout = 0,
},
Customize = new VSphere.Inputs.VirtualMachineCloneCustomizeArgs
{
DnsServerLists = new[]
{
"string",
},
DnsSuffixLists = new[]
{
"string",
},
Ipv4Gateway = "string",
Ipv6Gateway = "string",
LinuxOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeLinuxOptionsArgs
{
Domain = "string",
HostName = "string",
HwClockUtc = false,
ScriptText = "string",
TimeZone = "string",
},
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineCloneCustomizeNetworkInterfaceArgs
{
DnsDomain = "string",
DnsServerLists = new[]
{
"string",
},
Ipv4Address = "string",
Ipv4Netmask = 0,
Ipv6Address = "string",
Ipv6Netmask = 0,
},
},
Timeout = 0,
WindowsOptions = new VSphere.Inputs.VirtualMachineCloneCustomizeWindowsOptionsArgs
{
ComputerName = "string",
DomainOu = "string",
AutoLogonCount = 0,
AutoLogon = false,
DomainAdminPassword = "string",
DomainAdminUser = "string",
AdminPassword = "string",
FullName = "string",
JoinDomain = "string",
OrganizationName = "string",
ProductKey = "string",
RunOnceCommandLists = new[]
{
"string",
},
TimeZone = 0,
Workgroup = "string",
},
WindowsSysprepText = "string",
},
LinkedClone = false,
OvfNetworkMap =
{
{ "string", "string" },
},
OvfStorageMap =
{
{ "string", "string" },
},
Timeout = 0,
},
CpuHotAddEnabled = false,
CpuHotRemoveEnabled = false,
CpuLimit = 0,
CpuPerformanceCountersEnabled = false,
CpuReservation = 0,
CpuShareCount = 0,
CpuShareLevel = "string",
CustomAttributes =
{
{ "string", "string" },
},
DatacenterId = "string",
DatastoreClusterId = "string",
DatastoreId = "string",
Disks = new[]
{
new VSphere.Inputs.VirtualMachineDiskArgs
{
Label = "string",
IoShareLevel = "string",
DatastoreId = "string",
DeviceAddress = "string",
DiskMode = "string",
DiskSharing = "string",
EagerlyScrub = false,
IoLimit = 0,
IoReservation = 0,
Attach = false,
IoShareCount = 0,
ControllerType = "string",
Key = 0,
KeepOnRemove = false,
Path = "string",
Size = 0,
StoragePolicyId = "string",
ThinProvisioned = false,
UnitNumber = 0,
Uuid = "string",
WriteThrough = false,
},
},
EfiSecureBootEnabled = false,
EnableDiskUuid = false,
EnableLogging = false,
EptRviMode = "string",
ExtraConfig =
{
{ "string", "string" },
},
ExtraConfigRebootRequired = false,
Firmware = "string",
Folder = "string",
ForcePowerOff = false,
GuestId = "string",
HardwareVersion = 0,
HostSystemId = "string",
HvMode = "string",
IdeControllerCount = 0,
IgnoredGuestIps = new[]
{
"string",
},
LatencySensitivity = "string",
Memory = 0,
MemoryHotAddEnabled = false,
MemoryLimit = 0,
MemoryReservation = 0,
MemoryReservationLockedToMax = false,
MemoryShareCount = 0,
MemoryShareLevel = "string",
MigrateWaitTimeout = 0,
Name = "string",
NestedHvEnabled = false,
NetworkInterfaces = new[]
{
new VSphere.Inputs.VirtualMachineNetworkInterfaceArgs
{
NetworkId = "string",
AdapterType = "string",
BandwidthLimit = 0,
BandwidthReservation = 0,
BandwidthShareCount = 0,
BandwidthShareLevel = "string",
DeviceAddress = "string",
Key = 0,
MacAddress = "string",
OvfMapping = "string",
PhysicalFunction = "string",
UseStaticMac = false,
},
},
NumCoresPerSocket = 0,
NumCpus = 0,
NvmeControllerCount = 0,
OvfDeploy = new VSphere.Inputs.VirtualMachineOvfDeployArgs
{
AllowUnverifiedSslCert = false,
DeploymentOption = "string",
DiskProvisioning = "string",
EnableHiddenProperties = false,
IpAllocationPolicy = "string",
IpProtocol = "string",
LocalOvfPath = "string",
OvfNetworkMap =
{
{ "string", "string" },
},
RemoteOvfUrl = "string",
},
PciDeviceIds = new[]
{
"string",
},
PoweronTimeout = 0,
ReplaceTrigger = "string",
RunToolsScriptsAfterPowerOn = false,
RunToolsScriptsAfterResume = false,
RunToolsScriptsBeforeGuestReboot = false,
RunToolsScriptsBeforeGuestShutdown = false,
RunToolsScriptsBeforeGuestStandby = false,
SataControllerCount = 0,
ScsiBusSharing = "string",
ScsiControllerCount = 0,
ScsiType = "string",
ShutdownWaitTimeout = 0,
StoragePolicyId = "string",
SwapPlacementPolicy = "string",
SyncTimeWithHost = false,
SyncTimeWithHostPeriodically = false,
Tags = new[]
{
"string",
},
ToolsUpgradePolicy = "string",
Vapp = new VSphere.Inputs.VirtualMachineVappArgs
{
Properties =
{
{ "string", "string" },
},
},
VbsEnabled = false,
Vtpm = new VSphere.Inputs.VirtualMachineVtpmArgs
{
Version = "string",
},
VvtdEnabled = false,
WaitForGuestIpTimeout = 0,
WaitForGuestNetRoutable = false,
WaitForGuestNetTimeout = 0,
});
example, err := vsphere.NewVirtualMachine(ctx, "virtualMachineResource", &vsphere.VirtualMachineArgs{
ResourcePoolId: pulumi.String("string"),
AlternateGuestName: pulumi.String("string"),
Annotation: pulumi.String("string"),
BootDelay: pulumi.Int(0),
BootRetryDelay: pulumi.Int(0),
BootRetryEnabled: pulumi.Bool(false),
Cdroms: vsphere.VirtualMachineCdromArray{
&vsphere.VirtualMachineCdromArgs{
ClientDevice: pulumi.Bool(false),
DatastoreId: pulumi.String("string"),
DeviceAddress: pulumi.String("string"),
Key: pulumi.Int(0),
Path: pulumi.String("string"),
},
},
Clone: &vsphere.VirtualMachineCloneArgs{
TemplateUuid: pulumi.String("string"),
CustomizationSpec: &vsphere.VirtualMachineCloneCustomizationSpecArgs{
Id: pulumi.String("string"),
Timeout: pulumi.Int(0),
},
Customize: &vsphere.VirtualMachineCloneCustomizeArgs{
DnsServerLists: pulumi.StringArray{
pulumi.String("string"),
},
DnsSuffixLists: pulumi.StringArray{
pulumi.String("string"),
},
Ipv4Gateway: pulumi.String("string"),
Ipv6Gateway: pulumi.String("string"),
LinuxOptions: &vsphere.VirtualMachineCloneCustomizeLinuxOptionsArgs{
Domain: pulumi.String("string"),
HostName: pulumi.String("string"),
HwClockUtc: pulumi.Bool(false),
ScriptText: pulumi.String("string"),
TimeZone: pulumi.String("string"),
},
NetworkInterfaces: vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArray{
&vsphere.VirtualMachineCloneCustomizeNetworkInterfaceArgs{
DnsDomain: pulumi.String("string"),
DnsServerLists: pulumi.StringArray{
pulumi.String("string"),
},
Ipv4Address: pulumi.String("string"),
Ipv4Netmask: pulumi.Int(0),
Ipv6Address: pulumi.String("string"),
Ipv6Netmask: pulumi.Int(0),
},
},
Timeout: pulumi.Int(0),
WindowsOptions: &vsphere.VirtualMachineCloneCustomizeWindowsOptionsArgs{
ComputerName: pulumi.String("string"),
DomainOu: pulumi.String("string"),
AutoLogonCount: pulumi.Int(0),
AutoLogon: pulumi.Bool(false),
DomainAdminPassword: pulumi.String("string"),
DomainAdminUser: pulumi.String("string"),
AdminPassword: pulumi.String("string"),
FullName: pulumi.String("string"),
JoinDomain: pulumi.String("string"),
OrganizationName: pulumi.String("string"),
ProductKey: pulumi.String("string"),
RunOnceCommandLists: pulumi.StringArray{
pulumi.String("string"),
},
TimeZone: pulumi.Int(0),
Workgroup: pulumi.String("string"),
},
WindowsSysprepText: pulumi.String("string"),
},
LinkedClone: pulumi.Bool(false),
OvfNetworkMap: pulumi.StringMap{
"string": pulumi.String("string"),
},
OvfStorageMap: pulumi.StringMap{
"string": pulumi.String("string"),
},
Timeout: pulumi.Int(0),
},
CpuHotAddEnabled: pulumi.Bool(false),
CpuHotRemoveEnabled: pulumi.Bool(false),
CpuLimit: pulumi.Int(0),
CpuPerformanceCountersEnabled: pulumi.Bool(false),
CpuReservation: pulumi.Int(0),
CpuShareCount: pulumi.Int(0),
CpuShareLevel: pulumi.String("string"),
CustomAttributes: pulumi.StringMap{
"string": pulumi.String("string"),
},
DatacenterId: pulumi.String("string"),
DatastoreClusterId: pulumi.String("string"),
DatastoreId: pulumi.String("string"),
Disks: vsphere.VirtualMachineDiskArray{
&vsphere.VirtualMachineDiskArgs{
Label: pulumi.String("string"),
IoShareLevel: pulumi.String("string"),
DatastoreId: pulumi.String("string"),
DeviceAddress: pulumi.String("string"),
DiskMode: pulumi.String("string"),
DiskSharing: pulumi.String("string"),
EagerlyScrub: pulumi.Bool(false),
IoLimit: pulumi.Int(0),
IoReservation: pulumi.Int(0),
Attach: pulumi.Bool(false),
IoShareCount: pulumi.Int(0),
ControllerType: pulumi.String("string"),
Key: pulumi.Int(0),
KeepOnRemove: pulumi.Bool(false),
Path: pulumi.String("string"),
Size: pulumi.Int(0),
StoragePolicyId: pulumi.String("string"),
ThinProvisioned: pulumi.Bool(false),
UnitNumber: pulumi.Int(0),
Uuid: pulumi.String("string"),
WriteThrough: pulumi.Bool(false),
},
},
EfiSecureBootEnabled: pulumi.Bool(false),
EnableDiskUuid: pulumi.Bool(false),
EnableLogging: pulumi.Bool(false),
EptRviMode: pulumi.String("string"),
ExtraConfig: pulumi.StringMap{
"string": pulumi.String("string"),
},
ExtraConfigRebootRequired: pulumi.Bool(false),
Firmware: pulumi.String("string"),
Folder: pulumi.String("string"),
ForcePowerOff: pulumi.Bool(false),
GuestId: pulumi.String("string"),
HardwareVersion: pulumi.Int(0),
HostSystemId: pulumi.String("string"),
HvMode: pulumi.String("string"),
IdeControllerCount: pulumi.Int(0),
IgnoredGuestIps: pulumi.StringArray{
pulumi.String("string"),
},
LatencySensitivity: pulumi.String("string"),
Memory: pulumi.Int(0),
MemoryHotAddEnabled: pulumi.Bool(false),
MemoryLimit: pulumi.Int(0),
MemoryReservation: pulumi.Int(0),
MemoryReservationLockedToMax: pulumi.Bool(false),
MemoryShareCount: pulumi.Int(0),
MemoryShareLevel: pulumi.String("string"),
MigrateWaitTimeout: pulumi.Int(0),
Name: pulumi.String("string"),
NestedHvEnabled: pulumi.Bool(false),
NetworkInterfaces: vsphere.VirtualMachineNetworkInterfaceArray{
&vsphere.VirtualMachineNetworkInterfaceArgs{
NetworkId: pulumi.String("string"),
AdapterType: pulumi.String("string"),
BandwidthLimit: pulumi.Int(0),
BandwidthReservation: pulumi.Int(0),
BandwidthShareCount: pulumi.Int(0),
BandwidthShareLevel: pulumi.String("string"),
DeviceAddress: pulumi.String("string"),
Key: pulumi.Int(0),
MacAddress: pulumi.String("string"),
OvfMapping: pulumi.String("string"),
PhysicalFunction: pulumi.String("string"),
UseStaticMac: pulumi.Bool(false),
},
},
NumCoresPerSocket: pulumi.Int(0),
NumCpus: pulumi.Int(0),
NvmeControllerCount: pulumi.Int(0),
OvfDeploy: &vsphere.VirtualMachineOvfDeployArgs{
AllowUnverifiedSslCert: pulumi.Bool(false),
DeploymentOption: pulumi.String("string"),
DiskProvisioning: pulumi.String("string"),
EnableHiddenProperties: pulumi.Bool(false),
IpAllocationPolicy: pulumi.String("string"),
IpProtocol: pulumi.String("string"),
LocalOvfPath: pulumi.String("string"),
OvfNetworkMap: pulumi.StringMap{
"string": pulumi.String("string"),
},
RemoteOvfUrl: pulumi.String("string"),
},
PciDeviceIds: pulumi.StringArray{
pulumi.String("string"),
},
PoweronTimeout: pulumi.Int(0),
ReplaceTrigger: pulumi.String("string"),
RunToolsScriptsAfterPowerOn: pulumi.Bool(false),
RunToolsScriptsAfterResume: pulumi.Bool(false),
RunToolsScriptsBeforeGuestReboot: pulumi.Bool(false),
RunToolsScriptsBeforeGuestShutdown: pulumi.Bool(false),
RunToolsScriptsBeforeGuestStandby: pulumi.Bool(false),
SataControllerCount: pulumi.Int(0),
ScsiBusSharing: pulumi.String("string"),
ScsiControllerCount: pulumi.Int(0),
ScsiType: pulumi.String("string"),
ShutdownWaitTimeout: pulumi.Int(0),
StoragePolicyId: pulumi.String("string"),
SwapPlacementPolicy: pulumi.String("string"),
SyncTimeWithHost: pulumi.Bool(false),
SyncTimeWithHostPeriodically: pulumi.Bool(false),
Tags: pulumi.StringArray{
pulumi.String("string"),
},
ToolsUpgradePolicy: pulumi.String("string"),
Vapp: &vsphere.VirtualMachineVappArgs{
Properties: pulumi.StringMap{
"string": pulumi.String("string"),
},
},
VbsEnabled: pulumi.Bool(false),
Vtpm: &vsphere.VirtualMachineVtpmArgs{
Version: pulumi.String("string"),
},
VvtdEnabled: pulumi.Bool(false),
WaitForGuestIpTimeout: pulumi.Int(0),
WaitForGuestNetRoutable: pulumi.Bool(false),
WaitForGuestNetTimeout: pulumi.Int(0),
})
var virtualMachineResource = new VirtualMachine("virtualMachineResource", VirtualMachineArgs.builder()
.resourcePoolId("string")
.alternateGuestName("string")
.annotation("string")
.bootDelay(0)
.bootRetryDelay(0)
.bootRetryEnabled(false)
.cdroms(VirtualMachineCdromArgs.builder()
.clientDevice(false)
.datastoreId("string")
.deviceAddress("string")
.key(0)
.path("string")
.build())
.clone(VirtualMachineCloneArgs.builder()
.templateUuid("string")
.customizationSpec(VirtualMachineCloneCustomizationSpecArgs.builder()
.id("string")
.timeout(0)
.build())
.customize(VirtualMachineCloneCustomizeArgs.builder()
.dnsServerLists("string")
.dnsSuffixLists("string")
.ipv4Gateway("string")
.ipv6Gateway("string")
.linuxOptions(VirtualMachineCloneCustomizeLinuxOptionsArgs.builder()
.domain("string")
.hostName("string")
.hwClockUtc(false)
.scriptText("string")
.timeZone("string")
.build())
.networkInterfaces(VirtualMachineCloneCustomizeNetworkInterfaceArgs.builder()
.dnsDomain("string")
.dnsServerLists("string")
.ipv4Address("string")
.ipv4Netmask(0)
.ipv6Address("string")
.ipv6Netmask(0)
.build())
.timeout(0)
.windowsOptions(VirtualMachineCloneCustomizeWindowsOptionsArgs.builder()
.computerName("string")
.domainOu("string")
.autoLogonCount(0)
.autoLogon(false)
.domainAdminPassword("string")
.domainAdminUser("string")
.adminPassword("string")
.fullName("string")
.joinDomain("string")
.organizationName("string")
.productKey("string")
.runOnceCommandLists("string")
.timeZone(0)
.workgroup("string")
.build())
.windowsSysprepText("string")
.build())
.linkedClone(false)
.ovfNetworkMap(Map.of("string", "string"))
.ovfStorageMap(Map.of("string", "string"))
.timeout(0)
.build())
.cpuHotAddEnabled(false)
.cpuHotRemoveEnabled(false)
.cpuLimit(0)
.cpuPerformanceCountersEnabled(false)
.cpuReservation(0)
.cpuShareCount(0)
.cpuShareLevel("string")
.customAttributes(Map.of("string", "string"))
.datacenterId("string")
.datastoreClusterId("string")
.datastoreId("string")
.disks(VirtualMachineDiskArgs.builder()
.label("string")
.ioShareLevel("string")
.datastoreId("string")
.deviceAddress("string")
.diskMode("string")
.diskSharing("string")
.eagerlyScrub(false)
.ioLimit(0)
.ioReservation(0)
.attach(false)
.ioShareCount(0)
.controllerType("string")
.key(0)
.keepOnRemove(false)
.path("string")
.size(0)
.storagePolicyId("string")
.thinProvisioned(false)
.unitNumber(0)
.uuid("string")
.writeThrough(false)
.build())
.efiSecureBootEnabled(false)
.enableDiskUuid(false)
.enableLogging(false)
.eptRviMode("string")
.extraConfig(Map.of("string", "string"))
.extraConfigRebootRequired(false)
.firmware("string")
.folder("string")
.forcePowerOff(false)
.guestId("string")
.hardwareVersion(0)
.hostSystemId("string")
.hvMode("string")
.ideControllerCount(0)
.ignoredGuestIps("string")
.latencySensitivity("string")
.memory(0)
.memoryHotAddEnabled(false)
.memoryLimit(0)
.memoryReservation(0)
.memoryReservationLockedToMax(false)
.memoryShareCount(0)
.memoryShareLevel("string")
.migrateWaitTimeout(0)
.name("string")
.nestedHvEnabled(false)
.networkInterfaces(VirtualMachineNetworkInterfaceArgs.builder()
.networkId("string")
.adapterType("string")
.bandwidthLimit(0)
.bandwidthReservation(0)
.bandwidthShareCount(0)
.bandwidthShareLevel("string")
.deviceAddress("string")
.key(0)
.macAddress("string")
.ovfMapping("string")
.physicalFunction("string")
.useStaticMac(false)
.build())
.numCoresPerSocket(0)
.numCpus(0)
.nvmeControllerCount(0)
.ovfDeploy(VirtualMachineOvfDeployArgs.builder()
.allowUnverifiedSslCert(false)
.deploymentOption("string")
.diskProvisioning("string")
.enableHiddenProperties(false)
.ipAllocationPolicy("string")
.ipProtocol("string")
.localOvfPath("string")
.ovfNetworkMap(Map.of("string", "string"))
.remoteOvfUrl("string")
.build())
.pciDeviceIds("string")
.poweronTimeout(0)
.replaceTrigger("string")
.runToolsScriptsAfterPowerOn(false)
.runToolsScriptsAfterResume(false)
.runToolsScriptsBeforeGuestReboot(false)
.runToolsScriptsBeforeGuestShutdown(false)
.runToolsScriptsBeforeGuestStandby(false)
.sataControllerCount(0)
.scsiBusSharing("string")
.scsiControllerCount(0)
.scsiType("string")
.shutdownWaitTimeout(0)
.storagePolicyId("string")
.swapPlacementPolicy("string")
.syncTimeWithHost(false)
.syncTimeWithHostPeriodically(false)
.tags("string")
.toolsUpgradePolicy("string")
.vapp(VirtualMachineVappArgs.builder()
.properties(Map.of("string", "string"))
.build())
.vbsEnabled(false)
.vtpm(VirtualMachineVtpmArgs.builder()
.version("string")
.build())
.vvtdEnabled(false)
.waitForGuestIpTimeout(0)
.waitForGuestNetRoutable(false)
.waitForGuestNetTimeout(0)
.build());
virtual_machine_resource = vsphere.VirtualMachine("virtualMachineResource",
resource_pool_id="string",
alternate_guest_name="string",
annotation="string",
boot_delay=0,
boot_retry_delay=0,
boot_retry_enabled=False,
cdroms=[{
"client_device": False,
"datastore_id": "string",
"device_address": "string",
"key": 0,
"path": "string",
}],
clone={
"template_uuid": "string",
"customization_spec": {
"id": "string",
"timeout": 0,
},
"customize": {
"dns_server_lists": ["string"],
"dns_suffix_lists": ["string"],
"ipv4_gateway": "string",
"ipv6_gateway": "string",
"linux_options": {
"domain": "string",
"host_name": "string",
"hw_clock_utc": False,
"script_text": "string",
"time_zone": "string",
},
"network_interfaces": [{
"dns_domain": "string",
"dns_server_lists": ["string"],
"ipv4_address": "string",
"ipv4_netmask": 0,
"ipv6_address": "string",
"ipv6_netmask": 0,
}],
"timeout": 0,
"windows_options": {
"computer_name": "string",
"domain_ou": "string",
"auto_logon_count": 0,
"auto_logon": False,
"domain_admin_password": "string",
"domain_admin_user": "string",
"admin_password": "string",
"full_name": "string",
"join_domain": "string",
"organization_name": "string",
"product_key": "string",
"run_once_command_lists": ["string"],
"time_zone": 0,
"workgroup": "string",
},
"windows_sysprep_text": "string",
},
"linked_clone": False,
"ovf_network_map": {
"string": "string",
},
"ovf_storage_map": {
"string": "string",
},
"timeout": 0,
},
cpu_hot_add_enabled=False,
cpu_hot_remove_enabled=False,
cpu_limit=0,
cpu_performance_counters_enabled=False,
cpu_reservation=0,
cpu_share_count=0,
cpu_share_level="string",
custom_attributes={
"string": "string",
},
datacenter_id="string",
datastore_cluster_id="string",
datastore_id="string",
disks=[{
"label": "string",
"io_share_level": "string",
"datastore_id": "string",
"device_address": "string",
"disk_mode": "string",
"disk_sharing": "string",
"eagerly_scrub": False,
"io_limit": 0,
"io_reservation": 0,
"attach": False,
"io_share_count": 0,
"controller_type": "string",
"key": 0,
"keep_on_remove": False,
"path": "string",
"size": 0,
"storage_policy_id": "string",
"thin_provisioned": False,
"unit_number": 0,
"uuid": "string",
"write_through": False,
}],
efi_secure_boot_enabled=False,
enable_disk_uuid=False,
enable_logging=False,
ept_rvi_mode="string",
extra_config={
"string": "string",
},
extra_config_reboot_required=False,
firmware="string",
folder="string",
force_power_off=False,
guest_id="string",
hardware_version=0,
host_system_id="string",
hv_mode="string",
ide_controller_count=0,
ignored_guest_ips=["string"],
latency_sensitivity="string",
memory=0,
memory_hot_add_enabled=False,
memory_limit=0,
memory_reservation=0,
memory_reservation_locked_to_max=False,
memory_share_count=0,
memory_share_level="string",
migrate_wait_timeout=0,
name="string",
nested_hv_enabled=False,
network_interfaces=[{
"network_id": "string",
"adapter_type": "string",
"bandwidth_limit": 0,
"bandwidth_reservation": 0,
"bandwidth_share_count": 0,
"bandwidth_share_level": "string",
"device_address": "string",
"key": 0,
"mac_address": "string",
"ovf_mapping": "string",
"physical_function": "string",
"use_static_mac": False,
}],
num_cores_per_socket=0,
num_cpus=0,
nvme_controller_count=0,
ovf_deploy={
"allow_unverified_ssl_cert": False,
"deployment_option": "string",
"disk_provisioning": "string",
"enable_hidden_properties": False,
"ip_allocation_policy": "string",
"ip_protocol": "string",
"local_ovf_path": "string",
"ovf_network_map": {
"string": "string",
},
"remote_ovf_url": "string",
},
pci_device_ids=["string"],
poweron_timeout=0,
replace_trigger="string",
run_tools_scripts_after_power_on=False,
run_tools_scripts_after_resume=False,
run_tools_scripts_before_guest_reboot=False,
run_tools_scripts_before_guest_shutdown=False,
run_tools_scripts_before_guest_standby=False,
sata_controller_count=0,
scsi_bus_sharing="string",
scsi_controller_count=0,
scsi_type="string",
shutdown_wait_timeout=0,
storage_policy_id="string",
swap_placement_policy="string",
sync_time_with_host=False,
sync_time_with_host_periodically=False,
tags=["string"],
tools_upgrade_policy="string",
vapp={
"properties": {
"string": "string",
},
},
vbs_enabled=False,
vtpm={
"version": "string",
},
vvtd_enabled=False,
wait_for_guest_ip_timeout=0,
wait_for_guest_net_routable=False,
wait_for_guest_net_timeout=0)
const virtualMachineResource = new vsphere.VirtualMachine("virtualMachineResource", {
resourcePoolId: "string",
alternateGuestName: "string",
annotation: "string",
bootDelay: 0,
bootRetryDelay: 0,
bootRetryEnabled: false,
cdroms: [{
clientDevice: false,
datastoreId: "string",
deviceAddress: "string",
key: 0,
path: "string",
}],
clone: {
templateUuid: "string",
customizationSpec: {
id: "string",
timeout: 0,
},
customize: {
dnsServerLists: ["string"],
dnsSuffixLists: ["string"],
ipv4Gateway: "string",
ipv6Gateway: "string",
linuxOptions: {
domain: "string",
hostName: "string",
hwClockUtc: false,
scriptText: "string",
timeZone: "string",
},
networkInterfaces: [{
dnsDomain: "string",
dnsServerLists: ["string"],
ipv4Address: "string",
ipv4Netmask: 0,
ipv6Address: "string",
ipv6Netmask: 0,
}],
timeout: 0,
windowsOptions: {
computerName: "string",
domainOu: "string",
autoLogonCount: 0,
autoLogon: false,
domainAdminPassword: "string",
domainAdminUser: "string",
adminPassword: "string",
fullName: "string",
joinDomain: "string",
organizationName: "string",
productKey: "string",
runOnceCommandLists: ["string"],
timeZone: 0,
workgroup: "string",
},
windowsSysprepText: "string",
},
linkedClone: false,
ovfNetworkMap: {
string: "string",
},
ovfStorageMap: {
string: "string",
},
timeout: 0,
},
cpuHotAddEnabled: false,
cpuHotRemoveEnabled: false,
cpuLimit: 0,
cpuPerformanceCountersEnabled: false,
cpuReservation: 0,
cpuShareCount: 0,
cpuShareLevel: "string",
customAttributes: {
string: "string",
},
datacenterId: "string",
datastoreClusterId: "string",
datastoreId: "string",
disks: [{
label: "string",
ioShareLevel: "string",
datastoreId: "string",
deviceAddress: "string",
diskMode: "string",
diskSharing: "string",
eagerlyScrub: false,
ioLimit: 0,
ioReservation: 0,
attach: false,
ioShareCount: 0,
controllerType: "string",
key: 0,
keepOnRemove: false,
path: "string",
size: 0,
storagePolicyId: "string",
thinProvisioned: false,
unitNumber: 0,
uuid: "string",
writeThrough: false,
}],
efiSecureBootEnabled: false,
enableDiskUuid: false,
enableLogging: false,
eptRviMode: "string",
extraConfig: {
string: "string",
},
extraConfigRebootRequired: false,
firmware: "string",
folder: "string",
forcePowerOff: false,
guestId: "string",
hardwareVersion: 0,
hostSystemId: "string",
hvMode: "string",
ideControllerCount: 0,
ignoredGuestIps: ["string"],
latencySensitivity: "string",
memory: 0,
memoryHotAddEnabled: false,
memoryLimit: 0,
memoryReservation: 0,
memoryReservationLockedToMax: false,
memoryShareCount: 0,
memoryShareLevel: "string",
migrateWaitTimeout: 0,
name: "string",
nestedHvEnabled: false,
networkInterfaces: [{
networkId: "string",
adapterType: "string",
bandwidthLimit: 0,
bandwidthReservation: 0,
bandwidthShareCount: 0,
bandwidthShareLevel: "string",
deviceAddress: "string",
key: 0,
macAddress: "string",
ovfMapping: "string",
physicalFunction: "string",
useStaticMac: false,
}],
numCoresPerSocket: 0,
numCpus: 0,
nvmeControllerCount: 0,
ovfDeploy: {
allowUnverifiedSslCert: false,
deploymentOption: "string",
diskProvisioning: "string",
enableHiddenProperties: false,
ipAllocationPolicy: "string",
ipProtocol: "string",
localOvfPath: "string",
ovfNetworkMap: {
string: "string",
},
remoteOvfUrl: "string",
},
pciDeviceIds: ["string"],
poweronTimeout: 0,
replaceTrigger: "string",
runToolsScriptsAfterPowerOn: false,
runToolsScriptsAfterResume: false,
runToolsScriptsBeforeGuestReboot: false,
runToolsScriptsBeforeGuestShutdown: false,
runToolsScriptsBeforeGuestStandby: false,
sataControllerCount: 0,
scsiBusSharing: "string",
scsiControllerCount: 0,
scsiType: "string",
shutdownWaitTimeout: 0,
storagePolicyId: "string",
swapPlacementPolicy: "string",
syncTimeWithHost: false,
syncTimeWithHostPeriodically: false,
tags: ["string"],
toolsUpgradePolicy: "string",
vapp: {
properties: {
string: "string",
},
},
vbsEnabled: false,
vtpm: {
version: "string",
},
vvtdEnabled: false,
waitForGuestIpTimeout: 0,
waitForGuestNetRoutable: false,
waitForGuestNetTimeout: 0,
});
type: vsphere:VirtualMachine
properties:
alternateGuestName: string
annotation: string
bootDelay: 0
bootRetryDelay: 0
bootRetryEnabled: false
cdroms:
- clientDevice: false
datastoreId: string
deviceAddress: string
key: 0
path: string
clone:
customizationSpec:
id: string
timeout: 0
customize:
dnsServerLists:
- string
dnsSuffixLists:
- string
ipv4Gateway: string
ipv6Gateway: string
linuxOptions:
domain: string
hostName: string
hwClockUtc: false
scriptText: string
timeZone: string
networkInterfaces:
- dnsDomain: string
dnsServerLists:
- string
ipv4Address: string
ipv4Netmask: 0
ipv6Address: string
ipv6Netmask: 0
timeout: 0
windowsOptions:
adminPassword: string
autoLogon: false
autoLogonCount: 0
computerName: string
domainAdminPassword: string
domainAdminUser: string
domainOu: string
fullName: string
joinDomain: string
organizationName: string
productKey: string
runOnceCommandLists:
- string
timeZone: 0
workgroup: string
windowsSysprepText: string
linkedClone: false
ovfNetworkMap:
string: string
ovfStorageMap:
string: string
templateUuid: string
timeout: 0
cpuHotAddEnabled: false
cpuHotRemoveEnabled: false
cpuLimit: 0
cpuPerformanceCountersEnabled: false
cpuReservation: 0
cpuShareCount: 0
cpuShareLevel: string
customAttributes:
string: string
datacenterId: string
datastoreClusterId: string
datastoreId: string
disks:
- attach: false
controllerType: string
datastoreId: string
deviceAddress: string
diskMode: string
diskSharing: string
eagerlyScrub: false
ioLimit: 0
ioReservation: 0
ioShareCount: 0
ioShareLevel: string
keepOnRemove: false
key: 0
label: string
path: string
size: 0
storagePolicyId: string
thinProvisioned: false
unitNumber: 0
uuid: string
writeThrough: false
efiSecureBootEnabled: false
enableDiskUuid: false
enableLogging: false
eptRviMode: string
extraConfig:
string: string
extraConfigRebootRequired: false
firmware: string
folder: string
forcePowerOff: false
guestId: string
hardwareVersion: 0
hostSystemId: string
hvMode: string
ideControllerCount: 0
ignoredGuestIps:
- string
latencySensitivity: string
memory: 0
memoryHotAddEnabled: false
memoryLimit: 0
memoryReservation: 0
memoryReservationLockedToMax: false
memoryShareCount: 0
memoryShareLevel: string
migrateWaitTimeout: 0
name: string
nestedHvEnabled: false
networkInterfaces:
- adapterType: string
bandwidthLimit: 0
bandwidthReservation: 0
bandwidthShareCount: 0
bandwidthShareLevel: string
deviceAddress: string
key: 0
macAddress: string
networkId: string
ovfMapping: string
physicalFunction: string
useStaticMac: false
numCoresPerSocket: 0
numCpus: 0
nvmeControllerCount: 0
ovfDeploy:
allowUnverifiedSslCert: false
deploymentOption: string
diskProvisioning: string
enableHiddenProperties: false
ipAllocationPolicy: string
ipProtocol: string
localOvfPath: string
ovfNetworkMap:
string: string
remoteOvfUrl: string
pciDeviceIds:
- string
poweronTimeout: 0
replaceTrigger: string
resourcePoolId: string
runToolsScriptsAfterPowerOn: false
runToolsScriptsAfterResume: false
runToolsScriptsBeforeGuestReboot: false
runToolsScriptsBeforeGuestShutdown: false
runToolsScriptsBeforeGuestStandby: false
sataControllerCount: 0
scsiBusSharing: string
scsiControllerCount: 0
scsiType: string
shutdownWaitTimeout: 0
storagePolicyId: string
swapPlacementPolicy: string
syncTimeWithHost: false
syncTimeWithHostPeriodically: false
tags:
- string
toolsUpgradePolicy: string
vapp:
properties:
string: string
vbsEnabled: false
vtpm:
version: string
vvtdEnabled: false
waitForGuestIpTimeout: 0
waitForGuestNetRoutable: false
waitForGuestNetTimeout: 0
VirtualMachine Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The VirtualMachine resource accepts the following input properties:
- Resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- Alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- Annotation string
- User-provided description of the virtual machine.
- Boot
Delay int - The number of milliseconds to wait before starting the boot sequence.
- Boot
Retry intDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- Boot
Retry boolEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- Cdroms
List<Pulumi.
VSphere. Inputs. Virtual Machine Cdrom> - A specification for a CDROM device on this virtual machine.
- Clone
Pulumi.
VSphere. Inputs. Virtual Machine Clone - A specification for cloning a virtual machine from template.
- Cpu
Hot boolAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Hot boolRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Cpu
Performance boolCounters Enabled - Enable CPU performance counters on this virtual machine.
- Cpu
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- Custom
Attributes Dictionary<string, string> - A list of custom attributes to set on this resource.
- Datacenter
Id string - The ID of the datacenter where the VM is to be created.
- Datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- Datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- Disks
List<Pulumi.
VSphere. Inputs. Virtual Machine Disk> - A specification for a virtual disk device on this virtual machine.
- Efi
Secure boolBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- Enable
Disk boolUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- Enable
Logging bool - Enable logging on this virtual machine.
- Ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- Extra
Config Dictionary<string, string> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- Extra
Config boolReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - Firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- Folder string
- The name of the folder to locate the virtual machine in.
- Force
Power boolOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- Guest
Id string - The guest ID for the operating system.
- Hardware
Version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- Host
System stringId - The ID of an optional host system to pin the virtual machine to.
- Hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- Ide
Controller intCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ignored
Guest List<string>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- Latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- Memory int
- The size of the virtual machine's memory, in MB.
- Memory
Hot boolAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- Memory
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Memory
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Memory
Reservation boolLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- Migrate
Wait intTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- Name string
- The name of this virtual machine.
- Nested
Hv boolEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- Network
Interfaces List<Pulumi.VSphere. Inputs. Virtual Machine Network Interface> - A specification for a virtual NIC on this virtual machine.
- Num
Cores intPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- Num
Cpus int - The number of virtual processors to assign to this virtual machine.
- Nvme
Controller intCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ovf
Deploy Pulumi.VSphere. Inputs. Virtual Machine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- Pci
Device List<string>Ids - A list of PCI passthrough devices
- Poweron
Timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- Replace
Trigger string - Triggers replacement of resource whenever it changes.
- Run
Tools boolScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- Run
Tools boolScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- Sata
Controller intCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- Scsi
Controller intCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- Shutdown
Wait intTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- Swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- Sync
Time boolWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- Sync
Time boolWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<string>
- A list of tag IDs to apply to this object.
- Tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - Vapp
Pulumi.
VSphere. Inputs. Virtual Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- Vbs
Enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- Vtpm
Pulumi.
VSphere. Inputs. Virtual Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- Vvtd
Enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- Wait
For intGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Wait
For boolGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- Wait
For intGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- Alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- Annotation string
- User-provided description of the virtual machine.
- Boot
Delay int - The number of milliseconds to wait before starting the boot sequence.
- Boot
Retry intDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- Boot
Retry boolEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- Cdroms
[]Virtual
Machine Cdrom Args - A specification for a CDROM device on this virtual machine.
- Clone
Virtual
Machine Clone Args - A specification for cloning a virtual machine from template.
- Cpu
Hot boolAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Hot boolRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Cpu
Performance boolCounters Enabled - Enable CPU performance counters on this virtual machine.
- Cpu
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- Custom
Attributes map[string]string - A list of custom attributes to set on this resource.
- Datacenter
Id string - The ID of the datacenter where the VM is to be created.
- Datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- Datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- Disks
[]Virtual
Machine Disk Args - A specification for a virtual disk device on this virtual machine.
- Efi
Secure boolBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- Enable
Disk boolUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- Enable
Logging bool - Enable logging on this virtual machine.
- Ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- Extra
Config map[string]string - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- Extra
Config boolReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - Firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- Folder string
- The name of the folder to locate the virtual machine in.
- Force
Power boolOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- Guest
Id string - The guest ID for the operating system.
- Hardware
Version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- Host
System stringId - The ID of an optional host system to pin the virtual machine to.
- Hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- Ide
Controller intCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ignored
Guest []stringIps - List of IP addresses and CIDR networks to ignore while waiting for an IP
- Latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- Memory int
- The size of the virtual machine's memory, in MB.
- Memory
Hot boolAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- Memory
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Memory
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Memory
Reservation boolLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- Migrate
Wait intTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- Name string
- The name of this virtual machine.
- Nested
Hv boolEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- Network
Interfaces []VirtualMachine Network Interface Args - A specification for a virtual NIC on this virtual machine.
- Num
Cores intPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- Num
Cpus int - The number of virtual processors to assign to this virtual machine.
- Nvme
Controller intCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ovf
Deploy VirtualMachine Ovf Deploy Args - A specification for deploying a virtual machine from ovf/ova template.
- Pci
Device []stringIds - A list of PCI passthrough devices
- Poweron
Timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- Replace
Trigger string - Triggers replacement of resource whenever it changes.
- Run
Tools boolScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- Run
Tools boolScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- Sata
Controller intCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- Scsi
Controller intCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- Shutdown
Wait intTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- Swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- Sync
Time boolWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- Sync
Time boolWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - []string
- A list of tag IDs to apply to this object.
- Tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - Vapp
Virtual
Machine Vapp Args - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- Vbs
Enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- Vtpm
Virtual
Machine Vtpm Args - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- Vvtd
Enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- Wait
For intGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Wait
For boolGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- Wait
For intGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- resource
Pool StringId - The ID of a resource pool to put the virtual machine in.
- alternate
Guest StringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation String
- User-provided description of the virtual machine.
- boot
Delay Integer - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry IntegerDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry BooleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
List<Virtual
Machine Cdrom> - A specification for a CDROM device on this virtual machine.
- clone_
Virtual
Machine Clone - A specification for cloning a virtual machine from template.
- cpu
Hot BooleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot BooleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit Integer - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance BooleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation Integer - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Integer
- The amount of shares to allocate to cpu for a custom share level.
- String
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes Map<String,String> - A list of custom attributes to set on this resource.
- datacenter
Id String - The ID of the datacenter where the VM is to be created.
- datastore
Cluster StringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id String - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- disks
List<Virtual
Machine Disk> - A specification for a virtual disk device on this virtual machine.
- efi
Secure BooleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk BooleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging Boolean - Enable logging on this virtual machine.
- ept
Rvi StringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config Map<String,String> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config BooleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware String
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder String
- The name of the folder to locate the virtual machine in.
- force
Power BooleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id String - The guest ID for the operating system.
- hardware
Version Integer - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System StringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode String - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller IntegerCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest List<String>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- latency
Sensitivity String - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory Integer
- The size of the virtual machine's memory, in MB.
- memory
Hot BooleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit Integer - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation Integer - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation BooleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- Integer
- The amount of shares to allocate to memory for a custom share level.
- String
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait IntegerTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- name String
- The name of this virtual machine.
- nested
Hv BooleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces List<VirtualMachine Network Interface> - A specification for a virtual NIC on this virtual machine.
- num
Cores IntegerPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus Integer - The number of virtual processors to assign to this virtual machine.
- nvme
Controller IntegerCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy VirtualMachine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device List<String>Ids - A list of PCI passthrough devices
- poweron
Timeout Integer - The amount of time, in seconds, that we will be trying to power on a VM
- replace
Trigger String - Triggers replacement of resource whenever it changes.
- run
Tools BooleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools BooleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller IntegerCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus StringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller IntegerCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type String - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait IntegerTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement StringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time BooleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time BooleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<String>
- A list of tag IDs to apply to this object.
- tools
Upgrade StringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - vapp
Virtual
Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vbs
Enabled Boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vtpm
Virtual
Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled Boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For IntegerGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For BooleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For IntegerGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation string
- User-provided description of the virtual machine.
- boot
Delay number - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry numberDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry booleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
Virtual
Machine Cdrom[] - A specification for a CDROM device on this virtual machine.
- clone
Virtual
Machine Clone - A specification for cloning a virtual machine from template.
- cpu
Hot booleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot booleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance booleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- number
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes {[key: string]: string} - A list of custom attributes to set on this resource.
- datacenter
Id string - The ID of the datacenter where the VM is to be created.
- datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- disks
Virtual
Machine Disk[] - A specification for a virtual disk device on this virtual machine.
- efi
Secure booleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk booleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging boolean - Enable logging on this virtual machine.
- ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config {[key: string]: string} - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config booleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder string
- The name of the folder to locate the virtual machine in.
- force
Power booleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id string - The guest ID for the operating system.
- hardware
Version number - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System stringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller numberCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest string[]Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory number
- The size of the virtual machine's memory, in MB.
- memory
Hot booleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation booleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- number
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait numberTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- name string
- The name of this virtual machine.
- nested
Hv booleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces VirtualMachine Network Interface[] - A specification for a virtual NIC on this virtual machine.
- num
Cores numberPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus number - The number of virtual processors to assign to this virtual machine.
- nvme
Controller numberCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy VirtualMachine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device string[]Ids - A list of PCI passthrough devices
- poweron
Timeout number - The amount of time, in seconds, that we will be trying to power on a VM
- replace
Trigger string - Triggers replacement of resource whenever it changes.
- run
Tools booleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools booleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller numberCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller numberCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait numberTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time booleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time booleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - string[]
- A list of tag IDs to apply to this object.
- tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - vapp
Virtual
Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vbs
Enabled boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vtpm
Virtual
Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For numberGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For booleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For numberGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- resource_
pool_ strid - The ID of a resource pool to put the virtual machine in.
- alternate_
guest_ strname - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation str
- User-provided description of the virtual machine.
- boot_
delay int - The number of milliseconds to wait before starting the boot sequence.
- boot_
retry_ intdelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot_
retry_ boolenabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
Sequence[Virtual
Machine Cdrom Args] - A specification for a CDROM device on this virtual machine.
- clone
Virtual
Machine Clone Args - A specification for cloning a virtual machine from template.
- cpu_
hot_ booladd_ enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu_
hot_ boolremove_ enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu_
limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu_
performance_ boolcounters_ enabled - Enable CPU performance counters on this virtual machine.
- cpu_
reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- str
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom_
attributes Mapping[str, str] - A list of custom attributes to set on this resource.
- datacenter_
id str - The ID of the datacenter where the VM is to be created.
- datastore_
cluster_ strid - The ID of a datastore cluster to put the virtual machine in.
- datastore_
id str - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- disks
Sequence[Virtual
Machine Disk Args] - A specification for a virtual disk device on this virtual machine.
- efi_
secure_ boolboot_ enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable_
disk_ booluuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable_
logging bool - Enable logging on this virtual machine.
- ept_
rvi_ strmode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra_
config Mapping[str, str] - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra_
config_ boolreboot_ required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware str
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder str
- The name of the folder to locate the virtual machine in.
- force_
power_ booloff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest_
id str - The guest ID for the operating system.
- hardware_
version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host_
system_ strid - The ID of an optional host system to pin the virtual machine to.
- hv_
mode str - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide_
controller_ intcount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored_
guest_ Sequence[str]ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- latency_
sensitivity str - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory int
- The size of the virtual machine's memory, in MB.
- memory_
hot_ booladd_ enabled - Allow memory to be added to this virtual machine while it is running.
- memory_
limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory_
reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory_
reservation_ boollocked_ to_ max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- str
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate_
wait_ inttimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- name str
- The name of this virtual machine.
- nested_
hv_ boolenabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network_
interfaces Sequence[VirtualMachine Network Interface Args] - A specification for a virtual NIC on this virtual machine.
- num_
cores_ intper_ socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num_
cpus int - The number of virtual processors to assign to this virtual machine.
- nvme_
controller_ intcount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf_
deploy VirtualMachine Ovf Deploy Args - A specification for deploying a virtual machine from ovf/ova template.
- pci_
device_ Sequence[str]ids - A list of PCI passthrough devices
- poweron_
timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- replace_
trigger str - Triggers replacement of resource whenever it changes.
- run_
tools_ boolscripts_ after_ power_ on - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run_
tools_ boolscripts_ after_ resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata_
controller_ intcount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi_
bus_ strsharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi_
controller_ intcount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi_
type str - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown_
wait_ inttimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage_
policy_ strid - The ID of the storage policy to assign to the virtual machine home directory.
- swap_
placement_ strpolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync_
time_ boolwith_ host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync_
time_ boolwith_ host_ periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - Sequence[str]
- A list of tag IDs to apply to this object.
- tools_
upgrade_ strpolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - vapp
Virtual
Machine Vapp Args - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vbs_
enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vtpm
Virtual
Machine Vtpm Args - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd_
enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait_
for_ intguest_ ip_ timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait_
for_ boolguest_ net_ routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait_
for_ intguest_ net_ timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- resource
Pool StringId - The ID of a resource pool to put the virtual machine in.
- alternate
Guest StringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation String
- User-provided description of the virtual machine.
- boot
Delay Number - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry NumberDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry BooleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms List<Property Map>
- A specification for a CDROM device on this virtual machine.
- clone Property Map
- A specification for cloning a virtual machine from template.
- cpu
Hot BooleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot BooleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit Number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance BooleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation Number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Number
- The amount of shares to allocate to cpu for a custom share level.
- String
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes Map<String> - A list of custom attributes to set on this resource.
- datacenter
Id String - The ID of the datacenter where the VM is to be created.
- datastore
Cluster StringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id String - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- disks List<Property Map>
- A specification for a virtual disk device on this virtual machine.
- efi
Secure BooleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk BooleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging Boolean - Enable logging on this virtual machine.
- ept
Rvi StringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config Map<String> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config BooleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware String
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder String
- The name of the folder to locate the virtual machine in.
- force
Power BooleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id String - The guest ID for the operating system.
- hardware
Version Number - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System StringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode String - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller NumberCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest List<String>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- latency
Sensitivity String - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory Number
- The size of the virtual machine's memory, in MB.
- memory
Hot BooleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit Number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation Number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation BooleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- Number
- The amount of shares to allocate to memory for a custom share level.
- String
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait NumberTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- name String
- The name of this virtual machine.
- nested
Hv BooleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces List<Property Map> - A specification for a virtual NIC on this virtual machine.
- num
Cores NumberPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus Number - The number of virtual processors to assign to this virtual machine.
- nvme
Controller NumberCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy Property Map - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device List<String>Ids - A list of PCI passthrough devices
- poweron
Timeout Number - The amount of time, in seconds, that we will be trying to power on a VM
- replace
Trigger String - Triggers replacement of resource whenever it changes.
- run
Tools BooleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools BooleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller NumberCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus StringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller NumberCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type String - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait NumberTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement StringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time BooleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time BooleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<String>
- A list of tag IDs to apply to this object.
- tools
Upgrade StringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - vapp Property Map
- vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vbs
Enabled Boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vtpm Property Map
- A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled Boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For NumberGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For BooleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For NumberGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
Outputs
All input properties are implicitly available as output properties. Additionally, the VirtualMachine resource produces the following output properties:
- Change
Version string - A unique identifier for a given version of the last configuration was applied.
- Default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- Guest
Ip List<string>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - Id string
- The provider-assigned unique ID for this managed resource.
- Imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- Moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- Power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - Reboot
Required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Vapp
Transports List<string> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- Vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- Vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- Change
Version string - A unique identifier for a given version of the last configuration was applied.
- Default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- Guest
Ip []stringAddresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - Id string
- The provider-assigned unique ID for this managed resource.
- Imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- Moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- Power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - Reboot
Required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Vapp
Transports []string - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- Vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- Vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- change
Version String - A unique identifier for a given version of the last configuration was applied.
- default
Ip StringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- guest
Ip List<String>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - id String
- The provider-assigned unique ID for this managed resource.
- imported Boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- moid String
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- power
State String - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - reboot
Required Boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Transports List<String> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vmware
Tools StringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path String - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- change
Version string - A unique identifier for a given version of the last configuration was applied.
- default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- guest
Ip string[]Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - id string
- The provider-assigned unique ID for this managed resource.
- imported boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - reboot
Required boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Transports string[] - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- change_
version str - A unique identifier for a given version of the last configuration was applied.
- default_
ip_ straddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- guest_
ip_ Sequence[str]addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - id str
- The provider-assigned unique ID for this managed resource.
- imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- moid str
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- power_
state str - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - reboot_
required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- uuid str
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp_
transports Sequence[str] - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vmware_
tools_ strstatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx_
path str - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- change
Version String - A unique identifier for a given version of the last configuration was applied.
- default
Ip StringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- guest
Ip List<String>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - id String
- The provider-assigned unique ID for this managed resource.
- imported Boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- moid String
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- power
State String - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - reboot
Required Boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Transports List<String> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vmware
Tools StringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path String - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
Look up Existing VirtualMachine Resource
Get an existing VirtualMachine resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: VirtualMachineState, opts?: CustomResourceOptions): VirtualMachine@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
alternate_guest_name: Optional[str] = None,
annotation: Optional[str] = None,
boot_delay: Optional[int] = None,
boot_retry_delay: Optional[int] = None,
boot_retry_enabled: Optional[bool] = None,
cdroms: Optional[Sequence[VirtualMachineCdromArgs]] = None,
change_version: Optional[str] = None,
clone: Optional[VirtualMachineCloneArgs] = None,
cpu_hot_add_enabled: Optional[bool] = None,
cpu_hot_remove_enabled: Optional[bool] = None,
cpu_limit: Optional[int] = None,
cpu_performance_counters_enabled: Optional[bool] = None,
cpu_reservation: Optional[int] = None,
cpu_share_count: Optional[int] = None,
cpu_share_level: Optional[str] = None,
custom_attributes: Optional[Mapping[str, str]] = None,
datacenter_id: Optional[str] = None,
datastore_cluster_id: Optional[str] = None,
datastore_id: Optional[str] = None,
default_ip_address: Optional[str] = None,
disks: Optional[Sequence[VirtualMachineDiskArgs]] = None,
efi_secure_boot_enabled: Optional[bool] = None,
enable_disk_uuid: Optional[bool] = None,
enable_logging: Optional[bool] = None,
ept_rvi_mode: Optional[str] = None,
extra_config: Optional[Mapping[str, str]] = None,
extra_config_reboot_required: Optional[bool] = None,
firmware: Optional[str] = None,
folder: Optional[str] = None,
force_power_off: Optional[bool] = None,
guest_id: Optional[str] = None,
guest_ip_addresses: Optional[Sequence[str]] = None,
hardware_version: Optional[int] = None,
host_system_id: Optional[str] = None,
hv_mode: Optional[str] = None,
ide_controller_count: Optional[int] = None,
ignored_guest_ips: Optional[Sequence[str]] = None,
imported: Optional[bool] = None,
latency_sensitivity: Optional[str] = None,
memory: Optional[int] = None,
memory_hot_add_enabled: Optional[bool] = None,
memory_limit: Optional[int] = None,
memory_reservation: Optional[int] = None,
memory_reservation_locked_to_max: Optional[bool] = None,
memory_share_count: Optional[int] = None,
memory_share_level: Optional[str] = None,
migrate_wait_timeout: Optional[int] = None,
moid: Optional[str] = None,
name: Optional[str] = None,
nested_hv_enabled: Optional[bool] = None,
network_interfaces: Optional[Sequence[VirtualMachineNetworkInterfaceArgs]] = None,
num_cores_per_socket: Optional[int] = None,
num_cpus: Optional[int] = None,
nvme_controller_count: Optional[int] = None,
ovf_deploy: Optional[VirtualMachineOvfDeployArgs] = None,
pci_device_ids: Optional[Sequence[str]] = None,
power_state: Optional[str] = None,
poweron_timeout: Optional[int] = None,
reboot_required: Optional[bool] = None,
replace_trigger: Optional[str] = None,
resource_pool_id: Optional[str] = None,
run_tools_scripts_after_power_on: Optional[bool] = None,
run_tools_scripts_after_resume: Optional[bool] = None,
run_tools_scripts_before_guest_reboot: Optional[bool] = None,
run_tools_scripts_before_guest_shutdown: Optional[bool] = None,
run_tools_scripts_before_guest_standby: Optional[bool] = None,
sata_controller_count: Optional[int] = None,
scsi_bus_sharing: Optional[str] = None,
scsi_controller_count: Optional[int] = None,
scsi_type: Optional[str] = None,
shutdown_wait_timeout: Optional[int] = None,
storage_policy_id: Optional[str] = None,
swap_placement_policy: Optional[str] = None,
sync_time_with_host: Optional[bool] = None,
sync_time_with_host_periodically: Optional[bool] = None,
tags: Optional[Sequence[str]] = None,
tools_upgrade_policy: Optional[str] = None,
uuid: Optional[str] = None,
vapp: Optional[VirtualMachineVappArgs] = None,
vapp_transports: Optional[Sequence[str]] = None,
vbs_enabled: Optional[bool] = None,
vmware_tools_status: Optional[str] = None,
vmx_path: Optional[str] = None,
vtpm: Optional[VirtualMachineVtpmArgs] = None,
vvtd_enabled: Optional[bool] = None,
wait_for_guest_ip_timeout: Optional[int] = None,
wait_for_guest_net_routable: Optional[bool] = None,
wait_for_guest_net_timeout: Optional[int] = None) -> VirtualMachinefunc GetVirtualMachine(ctx *Context, name string, id IDInput, state *VirtualMachineState, opts ...ResourceOption) (*VirtualMachine, error)public static VirtualMachine Get(string name, Input<string> id, VirtualMachineState? state, CustomResourceOptions? opts = null)public static VirtualMachine get(String name, Output<String> id, VirtualMachineState state, CustomResourceOptions options)resources: _: type: vsphere:VirtualMachine get: id: ${id}- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- Annotation string
- User-provided description of the virtual machine.
- Boot
Delay int - The number of milliseconds to wait before starting the boot sequence.
- Boot
Retry intDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- Boot
Retry boolEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- Cdroms
List<Pulumi.
VSphere. Inputs. Virtual Machine Cdrom> - A specification for a CDROM device on this virtual machine.
- Change
Version string - A unique identifier for a given version of the last configuration was applied.
- Clone
Pulumi.
VSphere. Inputs. Virtual Machine Clone - A specification for cloning a virtual machine from template.
- Cpu
Hot boolAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Hot boolRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Cpu
Performance boolCounters Enabled - Enable CPU performance counters on this virtual machine.
- Cpu
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- Custom
Attributes Dictionary<string, string> - A list of custom attributes to set on this resource.
- Datacenter
Id string - The ID of the datacenter where the VM is to be created.
- Datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- Datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- Default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- Disks
List<Pulumi.
VSphere. Inputs. Virtual Machine Disk> - A specification for a virtual disk device on this virtual machine.
- Efi
Secure boolBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- Enable
Disk boolUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- Enable
Logging bool - Enable logging on this virtual machine.
- Ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- Extra
Config Dictionary<string, string> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- Extra
Config boolReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - Firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- Folder string
- The name of the folder to locate the virtual machine in.
- Force
Power boolOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- Guest
Id string - The guest ID for the operating system.
- Guest
Ip List<string>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - Hardware
Version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- Host
System stringId - The ID of an optional host system to pin the virtual machine to.
- Hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- Ide
Controller intCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ignored
Guest List<string>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- Imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- Latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- Memory int
- The size of the virtual machine's memory, in MB.
- Memory
Hot boolAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- Memory
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Memory
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Memory
Reservation boolLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- Migrate
Wait intTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- Moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- Name string
- The name of this virtual machine.
- Nested
Hv boolEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- Network
Interfaces List<Pulumi.VSphere. Inputs. Virtual Machine Network Interface> - A specification for a virtual NIC on this virtual machine.
- Num
Cores intPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- Num
Cpus int - The number of virtual processors to assign to this virtual machine.
- Nvme
Controller intCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ovf
Deploy Pulumi.VSphere. Inputs. Virtual Machine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- Pci
Device List<string>Ids - A list of PCI passthrough devices
- Power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - Poweron
Timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- Reboot
Required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- Replace
Trigger string - Triggers replacement of resource whenever it changes.
- Resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- Run
Tools boolScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- Run
Tools boolScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- Sata
Controller intCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- Scsi
Controller intCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- Shutdown
Wait intTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- Swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- Sync
Time boolWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- Sync
Time boolWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<string>
- A list of tag IDs to apply to this object.
- Tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Vapp
Pulumi.
VSphere. Inputs. Virtual Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- Vapp
Transports List<string> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- Vbs
Enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- Vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- Vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- Vtpm
Pulumi.
VSphere. Inputs. Virtual Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- Vvtd
Enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- Wait
For intGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Wait
For boolGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- Wait
For intGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- Annotation string
- User-provided description of the virtual machine.
- Boot
Delay int - The number of milliseconds to wait before starting the boot sequence.
- Boot
Retry intDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- Boot
Retry boolEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- Cdroms
[]Virtual
Machine Cdrom Args - A specification for a CDROM device on this virtual machine.
- Change
Version string - A unique identifier for a given version of the last configuration was applied.
- Clone
Virtual
Machine Clone Args - A specification for cloning a virtual machine from template.
- Cpu
Hot boolAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Hot boolRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- Cpu
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Cpu
Performance boolCounters Enabled - Enable CPU performance counters on this virtual machine.
- Cpu
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- Custom
Attributes map[string]string - A list of custom attributes to set on this resource.
- Datacenter
Id string - The ID of the datacenter where the VM is to be created.
- Datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- Datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- Default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- Disks
[]Virtual
Machine Disk Args - A specification for a virtual disk device on this virtual machine.
- Efi
Secure boolBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- Enable
Disk boolUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- Enable
Logging bool - Enable logging on this virtual machine.
- Ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- Extra
Config map[string]string - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- Extra
Config boolReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - Firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- Folder string
- The name of the folder to locate the virtual machine in.
- Force
Power boolOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- Guest
Id string - The guest ID for the operating system.
- Guest
Ip []stringAddresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - Hardware
Version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- Host
System stringId - The ID of an optional host system to pin the virtual machine to.
- Hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- Ide
Controller intCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ignored
Guest []stringIps - List of IP addresses and CIDR networks to ignore while waiting for an IP
- Imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- Latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- Memory int
- The size of the virtual machine's memory, in MB.
- Memory
Hot boolAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- Memory
Limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- Memory
Reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Memory
Reservation boolLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- Migrate
Wait intTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- Moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- Name string
- The name of this virtual machine.
- Nested
Hv boolEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- Network
Interfaces []VirtualMachine Network Interface Args - A specification for a virtual NIC on this virtual machine.
- Num
Cores intPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- Num
Cpus int - The number of virtual processors to assign to this virtual machine.
- Nvme
Controller intCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Ovf
Deploy VirtualMachine Ovf Deploy Args - A specification for deploying a virtual machine from ovf/ova template.
- Pci
Device []stringIds - A list of PCI passthrough devices
- Power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - Poweron
Timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- Reboot
Required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- Replace
Trigger string - Triggers replacement of resource whenever it changes.
- Resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- Run
Tools boolScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- Run
Tools boolScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- Run
Tools boolScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- Sata
Controller intCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- Scsi
Controller intCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- Scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- Shutdown
Wait intTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- Swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- Sync
Time boolWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- Sync
Time boolWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - []string
- A list of tag IDs to apply to this object.
- Tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Vapp
Virtual
Machine Vapp Args - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- Vapp
Transports []string - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- Vbs
Enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- Vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- Vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- Vtpm
Virtual
Machine Vtpm Args - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- Vvtd
Enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- Wait
For intGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- Wait
For boolGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- Wait
For intGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- alternate
Guest StringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation String
- User-provided description of the virtual machine.
- boot
Delay Integer - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry IntegerDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry BooleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
List<Virtual
Machine Cdrom> - A specification for a CDROM device on this virtual machine.
- change
Version String - A unique identifier for a given version of the last configuration was applied.
- clone_
Virtual
Machine Clone - A specification for cloning a virtual machine from template.
- cpu
Hot BooleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot BooleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit Integer - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance BooleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation Integer - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Integer
- The amount of shares to allocate to cpu for a custom share level.
- String
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes Map<String,String> - A list of custom attributes to set on this resource.
- datacenter
Id String - The ID of the datacenter where the VM is to be created.
- datastore
Cluster StringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id String - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- default
Ip StringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- disks
List<Virtual
Machine Disk> - A specification for a virtual disk device on this virtual machine.
- efi
Secure BooleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk BooleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging Boolean - Enable logging on this virtual machine.
- ept
Rvi StringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config Map<String,String> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config BooleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware String
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder String
- The name of the folder to locate the virtual machine in.
- force
Power BooleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id String - The guest ID for the operating system.
- guest
Ip List<String>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - hardware
Version Integer - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System StringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode String - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller IntegerCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest List<String>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- imported Boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- latency
Sensitivity String - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory Integer
- The size of the virtual machine's memory, in MB.
- memory
Hot BooleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit Integer - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation Integer - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation BooleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- Integer
- The amount of shares to allocate to memory for a custom share level.
- String
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait IntegerTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- moid String
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- name String
- The name of this virtual machine.
- nested
Hv BooleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces List<VirtualMachine Network Interface> - A specification for a virtual NIC on this virtual machine.
- num
Cores IntegerPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus Integer - The number of virtual processors to assign to this virtual machine.
- nvme
Controller IntegerCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy VirtualMachine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device List<String>Ids - A list of PCI passthrough devices
- power
State String - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - poweron
Timeout Integer - The amount of time, in seconds, that we will be trying to power on a VM
- reboot
Required Boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- replace
Trigger String - Triggers replacement of resource whenever it changes.
- resource
Pool StringId - The ID of a resource pool to put the virtual machine in.
- run
Tools BooleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools BooleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller IntegerCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus StringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller IntegerCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type String - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait IntegerTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement StringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time BooleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time BooleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<String>
- A list of tag IDs to apply to this object.
- tools
Upgrade StringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Virtual
Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vapp
Transports List<String> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vbs
Enabled Boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vmware
Tools StringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path String - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- vtpm
Virtual
Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled Boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For IntegerGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For BooleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For IntegerGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- alternate
Guest stringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation string
- User-provided description of the virtual machine.
- boot
Delay number - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry numberDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry booleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
Virtual
Machine Cdrom[] - A specification for a CDROM device on this virtual machine.
- change
Version string - A unique identifier for a given version of the last configuration was applied.
- clone
Virtual
Machine Clone - A specification for cloning a virtual machine from template.
- cpu
Hot booleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot booleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance booleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- number
- The amount of shares to allocate to cpu for a custom share level.
- string
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes {[key: string]: string} - A list of custom attributes to set on this resource.
- datacenter
Id string - The ID of the datacenter where the VM is to be created.
- datastore
Cluster stringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id string - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- default
Ip stringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- disks
Virtual
Machine Disk[] - A specification for a virtual disk device on this virtual machine.
- efi
Secure booleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk booleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging boolean - Enable logging on this virtual machine.
- ept
Rvi stringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config {[key: string]: string} - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config booleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware string
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder string
- The name of the folder to locate the virtual machine in.
- force
Power booleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id string - The guest ID for the operating system.
- guest
Ip string[]Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - hardware
Version number - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System stringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode string - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller numberCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest string[]Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- imported boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- latency
Sensitivity string - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory number
- The size of the virtual machine's memory, in MB.
- memory
Hot booleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation booleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- number
- The amount of shares to allocate to memory for a custom share level.
- string
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait numberTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- moid string
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- name string
- The name of this virtual machine.
- nested
Hv booleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces VirtualMachine Network Interface[] - A specification for a virtual NIC on this virtual machine.
- num
Cores numberPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus number - The number of virtual processors to assign to this virtual machine.
- nvme
Controller numberCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy VirtualMachine Ovf Deploy - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device string[]Ids - A list of PCI passthrough devices
- power
State string - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - poweron
Timeout number - The amount of time, in seconds, that we will be trying to power on a VM
- reboot
Required boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- replace
Trigger string - Triggers replacement of resource whenever it changes.
- resource
Pool stringId - The ID of a resource pool to put the virtual machine in.
- run
Tools booleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools booleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools booleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller numberCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus stringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller numberCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type string - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait numberTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy stringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement stringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time booleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time booleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - string[]
- A list of tag IDs to apply to this object.
- tools
Upgrade stringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Virtual
Machine Vapp - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vapp
Transports string[] - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vbs
Enabled boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vmware
Tools stringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path string - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- vtpm
Virtual
Machine Vtpm - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For numberGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For booleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For numberGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- alternate_
guest_ strname - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation str
- User-provided description of the virtual machine.
- boot_
delay int - The number of milliseconds to wait before starting the boot sequence.
- boot_
retry_ intdelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot_
retry_ boolenabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms
Sequence[Virtual
Machine Cdrom Args] - A specification for a CDROM device on this virtual machine.
- change_
version str - A unique identifier for a given version of the last configuration was applied.
- clone
Virtual
Machine Clone Args - A specification for cloning a virtual machine from template.
- cpu_
hot_ booladd_ enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu_
hot_ boolremove_ enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu_
limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu_
performance_ boolcounters_ enabled - Enable CPU performance counters on this virtual machine.
- cpu_
reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- int
- The amount of shares to allocate to cpu for a custom share level.
- str
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom_
attributes Mapping[str, str] - A list of custom attributes to set on this resource.
- datacenter_
id str - The ID of the datacenter where the VM is to be created.
- datastore_
cluster_ strid - The ID of a datastore cluster to put the virtual machine in.
- datastore_
id str - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- default_
ip_ straddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- disks
Sequence[Virtual
Machine Disk Args] - A specification for a virtual disk device on this virtual machine.
- efi_
secure_ boolboot_ enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable_
disk_ booluuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable_
logging bool - Enable logging on this virtual machine.
- ept_
rvi_ strmode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra_
config Mapping[str, str] - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra_
config_ boolreboot_ required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware str
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder str
- The name of the folder to locate the virtual machine in.
- force_
power_ booloff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest_
id str - The guest ID for the operating system.
- guest_
ip_ Sequence[str]addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - hardware_
version int - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host_
system_ strid - The ID of an optional host system to pin the virtual machine to.
- hv_
mode str - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide_
controller_ intcount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored_
guest_ Sequence[str]ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- imported bool
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- latency_
sensitivity str - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory int
- The size of the virtual machine's memory, in MB.
- memory_
hot_ booladd_ enabled - Allow memory to be added to this virtual machine while it is running.
- memory_
limit int - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory_
reservation int - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory_
reservation_ boollocked_ to_ max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- int
- The amount of shares to allocate to memory for a custom share level.
- str
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate_
wait_ inttimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- moid str
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- name str
- The name of this virtual machine.
- nested_
hv_ boolenabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network_
interfaces Sequence[VirtualMachine Network Interface Args] - A specification for a virtual NIC on this virtual machine.
- num_
cores_ intper_ socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num_
cpus int - The number of virtual processors to assign to this virtual machine.
- nvme_
controller_ intcount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf_
deploy VirtualMachine Ovf Deploy Args - A specification for deploying a virtual machine from ovf/ova template.
- pci_
device_ Sequence[str]ids - A list of PCI passthrough devices
- power_
state str - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - poweron_
timeout int - The amount of time, in seconds, that we will be trying to power on a VM
- reboot_
required bool - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- replace_
trigger str - Triggers replacement of resource whenever it changes.
- resource_
pool_ strid - The ID of a resource pool to put the virtual machine in.
- run_
tools_ boolscripts_ after_ power_ on - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run_
tools_ boolscripts_ after_ resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run_
tools_ boolscripts_ before_ guest_ standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata_
controller_ intcount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi_
bus_ strsharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi_
controller_ intcount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi_
type str - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown_
wait_ inttimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage_
policy_ strid - The ID of the storage policy to assign to the virtual machine home directory.
- swap_
placement_ strpolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync_
time_ boolwith_ host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync_
time_ boolwith_ host_ periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - Sequence[str]
- A list of tag IDs to apply to this object.
- tools_
upgrade_ strpolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - uuid str
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp
Virtual
Machine Vapp Args - vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vapp_
transports Sequence[str] - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vbs_
enabled bool - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vmware_
tools_ strstatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx_
path str - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- vtpm
Virtual
Machine Vtpm Args - A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd_
enabled bool - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait_
for_ intguest_ ip_ timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait_
for_ boolguest_ net_ routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait_
for_ intguest_ net_ timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- alternate
Guest StringName - The guest name for the operating system when guest_id is otherGuest or otherGuest64.
- annotation String
- User-provided description of the virtual machine.
- boot
Delay Number - The number of milliseconds to wait before starting the boot sequence.
- boot
Retry NumberDelay - The number of milliseconds to wait before retrying the boot sequence. This only valid if boot_retry_enabled is true.
- boot
Retry BooleanEnabled - If set to true, a virtual machine that fails to boot will try again after the delay defined in boot_retry_delay.
- cdroms List<Property Map>
- A specification for a CDROM device on this virtual machine.
- change
Version String - A unique identifier for a given version of the last configuration was applied.
- clone Property Map
- A specification for cloning a virtual machine from template.
- cpu
Hot BooleanAdd Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Hot BooleanRemove Enabled - Allow CPUs to be added to this virtual machine while it is running.
- cpu
Limit Number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- cpu
Performance BooleanCounters Enabled - Enable CPU performance counters on this virtual machine.
- cpu
Reservation Number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- Number
- The amount of shares to allocate to cpu for a custom share level.
- String
- The allocation level for cpu resources. Can be one of high, low, normal, or custom.
- custom
Attributes Map<String> - A list of custom attributes to set on this resource.
- datacenter
Id String - The ID of the datacenter where the VM is to be created.
- datastore
Cluster StringId - The ID of a datastore cluster to put the virtual machine in.
- datastore
Id String - The ID of the virtual machine's datastore. The virtual machine configuration is placed here, along with any virtual disks that are created without datastores.
- default
Ip StringAddress - The IP address selected by Terraform to be used with any provisioners configured on this resource. When possible, this is the first IPv4 address that is reachable through the default gateway configured on the machine, then the first reachable IPv6 address, and then the first general discovered address if neither exists. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this value will be blank.
- disks List<Property Map>
- A specification for a virtual disk device on this virtual machine.
- efi
Secure BooleanBoot Enabled - When the boot type set in firmware is efi, this enables EFI secure boot.
- enable
Disk BooleanUuid - Expose the UUIDs of attached virtual disks to the virtual machine, allowing access to them in the guest.
- enable
Logging Boolean - Enable logging on this virtual machine.
- ept
Rvi StringMode - The EPT/RVI (hardware memory virtualization) setting for this virtual machine. Can be one of automatic, on, or off.
- extra
Config Map<String> - Extra configuration data for this virtual machine. Can be used to supply advanced parameters not normally in configuration, such as instance metadata, or configuration data for OVF images.
- extra
Config BooleanReboot Required - Allow the virtual machine to be rebooted when a change to
extra_configoccurs. - firmware String
- The firmware interface to use on the virtual machine. Can be one of bios or efi.
- folder String
- The name of the folder to locate the virtual machine in.
- force
Power BooleanOff - Set to true to force power-off a virtual machine if a graceful guest shutdown failed for a necessary operation.
- guest
Id String - The guest ID for the operating system.
- guest
Ip List<String>Addresses - The current list of IP addresses on this machine, including the value of
default_ip_address. If VMware Tools is not running on the virtual machine, or if the virtual machine is powered off, this list will be empty. - hardware
Version Number - The hardware version for the virtual machine. Allows versions within ranges: 4, 7-11, 13-15, 17-22.
- host
System StringId - The ID of an optional host system to pin the virtual machine to.
- hv
Mode String - The (non-nested) hardware virtualization setting for this virtual machine. Can be one of hvAuto, hvOn, or hvOff.
- ide
Controller NumberCount - The number of IDE controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ignored
Guest List<String>Ips - List of IP addresses and CIDR networks to ignore while waiting for an IP
- imported Boolean
- Indicates if the virtual machine resource has been imported, or if the state has been migrated from a previous version of the resource. It influences the behavior of the first post-import apply operation. See the section on importing below.
- latency
Sensitivity String - Controls the scheduling delay of the virtual machine. Use a higher sensitivity for applications that require lower latency, such as VOIP, media player applications, or applications that require frequent access to mouse or keyboard devices. Can be one of low, normal, medium, or high.
- memory Number
- The size of the virtual machine's memory, in MB.
- memory
Hot BooleanAdd Enabled - Allow memory to be added to this virtual machine while it is running.
- memory
Limit Number - The maximum amount of memory (in MB) or CPU (in MHz) that this virtual machine can consume, regardless of available resources.
- memory
Reservation Number - The amount of memory (in MB) or CPU (in MHz) that this virtual machine is guaranteed.
- memory
Reservation BooleanLocked To Max - If set true, memory resource reservation for this virtual machine will always be equal to the virtual machine's memory size;increases in memory size will be rejected when a corresponding reservation increase is not possible. This feature may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
- Number
- The amount of shares to allocate to memory for a custom share level.
- String
- The allocation level for memory resources. Can be one of high, low, normal, or custom.
- migrate
Wait NumberTimeout - The amount of time, in minutes, to wait for a vMotion operation to complete before failing.
- moid String
- The [managed object reference ID][docs-about-morefs] of the created virtual machine.
- name String
- The name of this virtual machine.
- nested
Hv BooleanEnabled - Enable nested hardware virtualization on this virtual machine, facilitating nested virtualization in the guest.
- network
Interfaces List<Property Map> - A specification for a virtual NIC on this virtual machine.
- num
Cores NumberPer Socket - The number of cores to distribute amongst the CPUs in this virtual machine. If specified, the value supplied to num_cpus must be evenly divisible by this value.
- num
Cpus Number - The number of virtual processors to assign to this virtual machine.
- nvme
Controller NumberCount - The number of NVMe controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- ovf
Deploy Property Map - A specification for deploying a virtual machine from ovf/ova template.
- pci
Device List<String>Ids - A list of PCI passthrough devices
- power
State String - A computed value for the current power state of the virtual machine. One of
on,off, orsuspended. - poweron
Timeout Number - The amount of time, in seconds, that we will be trying to power on a VM
- reboot
Required Boolean - Value internal to Terraform used to determine if a configuration set change requires a reboot. This value is most useful during an update process and gets reset on refresh.
- replace
Trigger String - Triggers replacement of resource whenever it changes.
- resource
Pool StringId - The ID of a resource pool to put the virtual machine in.
- run
Tools BooleanScripts After Power On - Enable the run of scripts after virtual machine power-on when VMware Tools is installed.
- run
Tools BooleanScripts After Resume - Enable the run of scripts after virtual machine resume when when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Reboot - Enable the run of scripts before guest operating system reboot when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Shutdown - Enable the run of scripts before guest operating system shutdown when VMware Tools is installed.
- run
Tools BooleanScripts Before Guest Standby - Enable the run of scripts before guest operating system standby when VMware Tools is installed.
- sata
Controller NumberCount - The number of SATA controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Bus StringSharing - Mode for sharing the SCSI bus. The modes are physicalSharing, virtualSharing, and noSharing.
- scsi
Controller NumberCount - The number of SCSI controllers that Terraform manages on this virtual machine. This directly affects the amount of disks you can add to the virtual machine and the maximum disk unit number. Note that lowering this value does not remove controllers.
- scsi
Type String - The type of SCSI bus this virtual machine will have. Can be one of lsilogic, lsilogic-sas or pvscsi.
- shutdown
Wait NumberTimeout - The amount of time, in minutes, to wait for shutdown when making necessary updates to the virtual machine.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual machine home directory.
- swap
Placement StringPolicy - The swap file placement policy for this virtual machine. Can be one of inherit, hostLocal, or vmDirectory.
- sync
Time BooleanWith Host - Enable guest clock synchronization with the host. On vSphere 7.0 U1 and above, with only this setting the clock is synchronized on startup and resume. Requires VMware Tools to be installed.
- sync
Time BooleanWith Host Periodically - Enable periodic clock synchronization with the host. Supported only on vSphere 7.0 U1 and above. On prior versions setting
sync_time_with_hostis enough for periodic synchronization. Requires VMware Tools to be installed. - List<String>
- A list of tag IDs to apply to this object.
- tools
Upgrade StringPolicy - Set the upgrade policy for VMware Tools. Can be one of
manualorupgradeAtPowerCycle. - uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - vapp Property Map
- vApp configuration data for this virtual machine. Can be used to provide configuration data for OVF images.
- vapp
Transports List<String> - Computed value which is only valid for cloned virtual machines. A list of vApp transport methods supported by the source virtual machine or template.
- vbs
Enabled Boolean - Flag to specify if Virtualization-based security is enabled for this virtual machine.
- vmware
Tools StringStatus - The state of VMware Tools in the guest. This will determine the proper course of action for some device operations.
- vmx
Path String - The path of the virtual machine configuration file on the datastore in which the virtual machine is placed.
- vtpm Property Map
- A specification for a virtual Trusted Platform Module (TPM) device on the virtual machine.
- vvtd
Enabled Boolean - Flag to specify if I/O MMU virtualization, also called Intel Virtualization Technology for Directed I/O (VT-d) and AMD I/O Virtualization (AMD-Vi or IOMMU), is enabled.
- wait
For NumberGuest Ip Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
- wait
For BooleanGuest Net Routable - Controls whether or not the guest network waiter waits for a routable address. When false, the waiter does not wait for a default gateway, nor are IP addresses checked against any discovered default gateways as part of its success criteria.
- wait
For NumberGuest Net Timeout - The amount of time, in minutes, to wait for an available IP address on this virtual machine. A value less than 1 disables the waiter.
Supporting Types
VirtualMachineCdrom, VirtualMachineCdromArgs
- Client
Device bool - Indicates whether the device should be mapped to a remote client device
- Datastore
Id string - The datastore ID the ISO is located on.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Key int
- The ID of the device within the virtual machine.
- Path string
- The path to the ISO file on the datastore.
- Client
Device bool - Indicates whether the device should be mapped to a remote client device
- Datastore
Id string - The datastore ID the ISO is located on.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Key int
- The ID of the device within the virtual machine.
- Path string
- The path to the ISO file on the datastore.
- client
Device Boolean - Indicates whether the device should be mapped to a remote client device
- datastore
Id String - The datastore ID the ISO is located on.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key Integer
- The ID of the device within the virtual machine.
- path String
- The path to the ISO file on the datastore.
- client
Device boolean - Indicates whether the device should be mapped to a remote client device
- datastore
Id string - The datastore ID the ISO is located on.
- device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key number
- The ID of the device within the virtual machine.
- path string
- The path to the ISO file on the datastore.
- client_
device bool - Indicates whether the device should be mapped to a remote client device
- datastore_
id str - The datastore ID the ISO is located on.
- device_
address str - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key int
- The ID of the device within the virtual machine.
- path str
- The path to the ISO file on the datastore.
- client
Device Boolean - Indicates whether the device should be mapped to a remote client device
- datastore
Id String - The datastore ID the ISO is located on.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key Number
- The ID of the device within the virtual machine.
- path String
- The path to the ISO file on the datastore.
VirtualMachineClone, VirtualMachineCloneArgs
- Template
Uuid string - The UUID of the source virtual machine or template.
- Customization
Spec Pulumi.VSphere. Inputs. Virtual Machine Clone Customization Spec - The customization specification for the virtual machine post-clone.
- Customize
Pulumi.
VSphere. Inputs. Virtual Machine Clone Customize - The customization specification for the virtual machine post-clone.
- Linked
Clone bool - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- Ovf
Network Dictionary<string, string>Map - Mapping of ovf networks to the networks to use in vSphere.
- Ovf
Storage Dictionary<string, string>Map - Mapping of ovf storage to the datastores to use in vSphere.
- Timeout int
- The timeout, in minutes, to wait for the virtual machine clone to complete.
- Template
Uuid string - The UUID of the source virtual machine or template.
- Customization
Spec VirtualMachine Clone Customization Spec - The customization specification for the virtual machine post-clone.
- Customize
Virtual
Machine Clone Customize - The customization specification for the virtual machine post-clone.
- Linked
Clone bool - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- Ovf
Network map[string]stringMap - Mapping of ovf networks to the networks to use in vSphere.
- Ovf
Storage map[string]stringMap - Mapping of ovf storage to the datastores to use in vSphere.
- Timeout int
- The timeout, in minutes, to wait for the virtual machine clone to complete.
- template
Uuid String - The UUID of the source virtual machine or template.
- customization
Spec VirtualMachine Clone Customization Spec - The customization specification for the virtual machine post-clone.
- customize
Virtual
Machine Clone Customize - The customization specification for the virtual machine post-clone.
- linked
Clone Boolean - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- ovf
Network Map<String,String>Map - Mapping of ovf networks to the networks to use in vSphere.
- ovf
Storage Map<String,String>Map - Mapping of ovf storage to the datastores to use in vSphere.
- timeout Integer
- The timeout, in minutes, to wait for the virtual machine clone to complete.
- template
Uuid string - The UUID of the source virtual machine or template.
- customization
Spec VirtualMachine Clone Customization Spec - The customization specification for the virtual machine post-clone.
- customize
Virtual
Machine Clone Customize - The customization specification for the virtual machine post-clone.
- linked
Clone boolean - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- ovf
Network {[key: string]: string}Map - Mapping of ovf networks to the networks to use in vSphere.
- ovf
Storage {[key: string]: string}Map - Mapping of ovf storage to the datastores to use in vSphere.
- timeout number
- The timeout, in minutes, to wait for the virtual machine clone to complete.
- template_
uuid str - The UUID of the source virtual machine or template.
- customization_
spec VirtualMachine Clone Customization Spec - The customization specification for the virtual machine post-clone.
- customize
Virtual
Machine Clone Customize - The customization specification for the virtual machine post-clone.
- linked_
clone bool - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- ovf_
network_ Mapping[str, str]map - Mapping of ovf networks to the networks to use in vSphere.
- ovf_
storage_ Mapping[str, str]map - Mapping of ovf storage to the datastores to use in vSphere.
- timeout int
- The timeout, in minutes, to wait for the virtual machine clone to complete.
- template
Uuid String - The UUID of the source virtual machine or template.
- customization
Spec Property Map - The customization specification for the virtual machine post-clone.
- customize Property Map
- The customization specification for the virtual machine post-clone.
- linked
Clone Boolean - Whether or not to create a linked clone when cloning. When this option is used, the source VM must have a single snapshot associated with it.
- ovf
Network Map<String>Map - Mapping of ovf networks to the networks to use in vSphere.
- ovf
Storage Map<String>Map - Mapping of ovf storage to the datastores to use in vSphere.
- timeout Number
- The timeout, in minutes, to wait for the virtual machine clone to complete.
VirtualMachineCloneCustomizationSpec, VirtualMachineCloneCustomizationSpecArgs
VirtualMachineCloneCustomize, VirtualMachineCloneCustomizeArgs
- Dns
Server List<string>Lists - The list of DNS servers for a virtual network adapter with a static IP address.
- Dns
Suffix List<string>Lists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- Ipv4Gateway string
- The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- Ipv6Gateway string
- The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- Linux
Options Pulumi.VSphere. Inputs. Virtual Machine Clone Customize Linux Options - A list of configuration options specific to Linux virtual machines.
- Network
Interfaces List<Pulumi.VSphere. Inputs. Virtual Machine Clone Customize Network Interface> - A specification of network interface configuration options.
- Timeout int
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- Windows
Options Pulumi.VSphere. Inputs. Virtual Machine Clone Customize Windows Options - A list of configuration options specific to Windows virtual machines.
- Windows
Sysprep stringText - Use this option to specify a windows sysprep file directly.
- Dns
Server []stringLists - The list of DNS servers for a virtual network adapter with a static IP address.
- Dns
Suffix []stringLists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- Ipv4Gateway string
- The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- Ipv6Gateway string
- The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- Linux
Options VirtualMachine Clone Customize Linux Options - A list of configuration options specific to Linux virtual machines.
- Network
Interfaces []VirtualMachine Clone Customize Network Interface - A specification of network interface configuration options.
- Timeout int
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- Windows
Options VirtualMachine Clone Customize Windows Options - A list of configuration options specific to Windows virtual machines.
- Windows
Sysprep stringText - Use this option to specify a windows sysprep file directly.
- dns
Server List<String>Lists - The list of DNS servers for a virtual network adapter with a static IP address.
- dns
Suffix List<String>Lists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- ipv4Gateway String
- The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- ipv6Gateway String
- The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- linux
Options VirtualMachine Clone Customize Linux Options - A list of configuration options specific to Linux virtual machines.
- network
Interfaces List<VirtualMachine Clone Customize Network Interface> - A specification of network interface configuration options.
- timeout Integer
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- windows
Options VirtualMachine Clone Customize Windows Options - A list of configuration options specific to Windows virtual machines.
- windows
Sysprep StringText - Use this option to specify a windows sysprep file directly.
- dns
Server string[]Lists - The list of DNS servers for a virtual network adapter with a static IP address.
- dns
Suffix string[]Lists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- ipv4Gateway string
- The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- ipv6Gateway string
- The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- linux
Options VirtualMachine Clone Customize Linux Options - A list of configuration options specific to Linux virtual machines.
- network
Interfaces VirtualMachine Clone Customize Network Interface[] - A specification of network interface configuration options.
- timeout number
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- windows
Options VirtualMachine Clone Customize Windows Options - A list of configuration options specific to Windows virtual machines.
- windows
Sysprep stringText - Use this option to specify a windows sysprep file directly.
- dns_
server_ Sequence[str]lists - The list of DNS servers for a virtual network adapter with a static IP address.
- dns_
suffix_ Sequence[str]lists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- ipv4_
gateway str - The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- ipv6_
gateway str - The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- linux_
options VirtualMachine Clone Customize Linux Options - A list of configuration options specific to Linux virtual machines.
- network_
interfaces Sequence[VirtualMachine Clone Customize Network Interface] - A specification of network interface configuration options.
- timeout int
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- windows_
options VirtualMachine Clone Customize Windows Options - A list of configuration options specific to Windows virtual machines.
- windows_
sysprep_ strtext - Use this option to specify a windows sysprep file directly.
- dns
Server List<String>Lists - The list of DNS servers for a virtual network adapter with a static IP address.
- dns
Suffix List<String>Lists - A list of DNS search domains to add to the DNS configuration on the virtual machine.
- ipv4Gateway String
- The IPv4 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- ipv6Gateway String
- The IPv6 default gateway when using network_interface customization on the virtual machine. This address must be local to a static IPv4 address configured in an interface sub-resource.
- linux
Options Property Map - A list of configuration options specific to Linux virtual machines.
- network
Interfaces List<Property Map> - A specification of network interface configuration options.
- timeout Number
- The amount of time, in minutes, to wait for guest OS customization to complete before returning with an error. Setting this value to 0 or a negative value skips the waiter. Default: 10.
- windows
Options Property Map - A list of configuration options specific to Windows virtual machines.
- windows
Sysprep StringText - Use this option to specify a windows sysprep file directly.
VirtualMachineCloneCustomizeLinuxOptions, VirtualMachineCloneCustomizeLinuxOptionsArgs
- Domain string
- The domain name for this virtual machine.
- Host
Name string - The hostname for this virtual machine.
- Hw
Clock boolUtc - Specifies whether or not the hardware clock should be in UTC or not.
- Script
Text string - The customization script to run before and or after guest customization
- Time
Zone string - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
- Domain string
- The domain name for this virtual machine.
- Host
Name string - The hostname for this virtual machine.
- Hw
Clock boolUtc - Specifies whether or not the hardware clock should be in UTC or not.
- Script
Text string - The customization script to run before and or after guest customization
- Time
Zone string - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
- domain String
- The domain name for this virtual machine.
- host
Name String - The hostname for this virtual machine.
- hw
Clock BooleanUtc - Specifies whether or not the hardware clock should be in UTC or not.
- script
Text String - The customization script to run before and or after guest customization
- time
Zone String - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
- domain string
- The domain name for this virtual machine.
- host
Name string - The hostname for this virtual machine.
- hw
Clock booleanUtc - Specifies whether or not the hardware clock should be in UTC or not.
- script
Text string - The customization script to run before and or after guest customization
- time
Zone string - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
- domain str
- The domain name for this virtual machine.
- host_
name str - The hostname for this virtual machine.
- hw_
clock_ boolutc - Specifies whether or not the hardware clock should be in UTC or not.
- script_
text str - The customization script to run before and or after guest customization
- time_
zone str - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
- domain String
- The domain name for this virtual machine.
- host
Name String - The hostname for this virtual machine.
- hw
Clock BooleanUtc - Specifies whether or not the hardware clock should be in UTC or not.
- script
Text String - The customization script to run before and or after guest customization
- time
Zone String - Customize the time zone on the VM. This should be a time zone-style entry, like America/Los_Angeles.
VirtualMachineCloneCustomizeNetworkInterface, VirtualMachineCloneCustomizeNetworkInterfaceArgs
- Dns
Domain string - A DNS search domain to add to the DNS configuration on the virtual machine.
- Dns
Server List<string>Lists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- Ipv4Address string
- The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- Ipv4Netmask int
- The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- Ipv6Address string
- The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- Ipv6Netmask int
- The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
- Dns
Domain string - A DNS search domain to add to the DNS configuration on the virtual machine.
- Dns
Server []stringLists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- Ipv4Address string
- The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- Ipv4Netmask int
- The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- Ipv6Address string
- The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- Ipv6Netmask int
- The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
- dns
Domain String - A DNS search domain to add to the DNS configuration on the virtual machine.
- dns
Server List<String>Lists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- ipv4Address String
- The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- ipv4Netmask Integer
- The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- ipv6Address String
- The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- ipv6Netmask Integer
- The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
- dns
Domain string - A DNS search domain to add to the DNS configuration on the virtual machine.
- dns
Server string[]Lists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- ipv4Address string
- The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- ipv4Netmask number
- The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- ipv6Address string
- The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- ipv6Netmask number
- The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
- dns_
domain str - A DNS search domain to add to the DNS configuration on the virtual machine.
- dns_
server_ Sequence[str]lists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- ipv4_
address str - The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- ipv4_
netmask int - The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- ipv6_
address str - The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- ipv6_
netmask int - The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
- dns
Domain String - A DNS search domain to add to the DNS configuration on the virtual machine.
- dns
Server List<String>Lists - Network-interface specific DNS settings for Windows operating systems. Ignored on Linux.
- ipv4Address String
- The IPv4 address assigned to this network adapter. If left blank, DHCP is used.
- ipv4Netmask Number
- The IPv4 CIDR netmask for the supplied IP address. Ignored if DHCP is selected.
- ipv6Address String
- The IPv6 address assigned to this network adapter. If left blank, default auto-configuration is used.
- ipv6Netmask Number
- The IPv6 CIDR netmask for the supplied IP address. Ignored if auto-configuration is selected.
VirtualMachineCloneCustomizeWindowsOptions, VirtualMachineCloneCustomizeWindowsOptionsArgs
- Computer
Name string - The host name for this virtual machine.
- Admin
Password string - The new administrator password for this virtual machine.
- Auto
Logon bool - Specifies whether or not the VM automatically logs on as Administrator.
- Auto
Logon intCount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- Domain
Admin stringPassword - The password of the domain administrator used to join this virtual machine to the domain.
- Domain
Admin stringUser - The user account of the domain administrator used to join this virtual machine to the domain.
- Domain
Ou string - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- Full
Name string - The full name of the user of this virtual machine.
- Join
Domain string - The domain that the virtual machine should join.
- Organization
Name string - The organization name this virtual machine is being installed for.
- Product
Key string - The product key for this virtual machine.
- Run
Once List<string>Command Lists - A list of commands to run at first user logon, after guest customization.
- Time
Zone int - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- Workgroup string
- The workgroup for this virtual machine if not joining a domain.
- Computer
Name string - The host name for this virtual machine.
- Admin
Password string - The new administrator password for this virtual machine.
- Auto
Logon bool - Specifies whether or not the VM automatically logs on as Administrator.
- Auto
Logon intCount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- Domain
Admin stringPassword - The password of the domain administrator used to join this virtual machine to the domain.
- Domain
Admin stringUser - The user account of the domain administrator used to join this virtual machine to the domain.
- Domain
Ou string - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- Full
Name string - The full name of the user of this virtual machine.
- Join
Domain string - The domain that the virtual machine should join.
- Organization
Name string - The organization name this virtual machine is being installed for.
- Product
Key string - The product key for this virtual machine.
- Run
Once []stringCommand Lists - A list of commands to run at first user logon, after guest customization.
- Time
Zone int - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- Workgroup string
- The workgroup for this virtual machine if not joining a domain.
- computer
Name String - The host name for this virtual machine.
- admin
Password String - The new administrator password for this virtual machine.
- auto
Logon Boolean - Specifies whether or not the VM automatically logs on as Administrator.
- auto
Logon IntegerCount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- domain
Admin StringPassword - The password of the domain administrator used to join this virtual machine to the domain.
- domain
Admin StringUser - The user account of the domain administrator used to join this virtual machine to the domain.
- domain
Ou String - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- full
Name String - The full name of the user of this virtual machine.
- join
Domain String - The domain that the virtual machine should join.
- organization
Name String - The organization name this virtual machine is being installed for.
- product
Key String - The product key for this virtual machine.
- run
Once List<String>Command Lists - A list of commands to run at first user logon, after guest customization.
- time
Zone Integer - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- workgroup String
- The workgroup for this virtual machine if not joining a domain.
- computer
Name string - The host name for this virtual machine.
- admin
Password string - The new administrator password for this virtual machine.
- auto
Logon boolean - Specifies whether or not the VM automatically logs on as Administrator.
- auto
Logon numberCount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- domain
Admin stringPassword - The password of the domain administrator used to join this virtual machine to the domain.
- domain
Admin stringUser - The user account of the domain administrator used to join this virtual machine to the domain.
- domain
Ou string - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- full
Name string - The full name of the user of this virtual machine.
- join
Domain string - The domain that the virtual machine should join.
- organization
Name string - The organization name this virtual machine is being installed for.
- product
Key string - The product key for this virtual machine.
- run
Once string[]Command Lists - A list of commands to run at first user logon, after guest customization.
- time
Zone number - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- workgroup string
- The workgroup for this virtual machine if not joining a domain.
- computer_
name str - The host name for this virtual machine.
- admin_
password str - The new administrator password for this virtual machine.
- auto_
logon bool - Specifies whether or not the VM automatically logs on as Administrator.
- auto_
logon_ intcount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- domain_
admin_ strpassword - The password of the domain administrator used to join this virtual machine to the domain.
- domain_
admin_ struser - The user account of the domain administrator used to join this virtual machine to the domain.
- domain_
ou str - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- full_
name str - The full name of the user of this virtual machine.
- join_
domain str - The domain that the virtual machine should join.
- organization_
name str - The organization name this virtual machine is being installed for.
- product_
key str - The product key for this virtual machine.
- run_
once_ Sequence[str]command_ lists - A list of commands to run at first user logon, after guest customization.
- time_
zone int - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- workgroup str
- The workgroup for this virtual machine if not joining a domain.
- computer
Name String - The host name for this virtual machine.
- admin
Password String - The new administrator password for this virtual machine.
- auto
Logon Boolean - Specifies whether or not the VM automatically logs on as Administrator.
- auto
Logon NumberCount - Specifies how many times the VM should auto-logon the Administrator account when auto_logon is true.
- domain
Admin StringPassword - The password of the domain administrator used to join this virtual machine to the domain.
- domain
Admin StringUser - The user account of the domain administrator used to join this virtual machine to the domain.
- domain
Ou String - The MachineObjectOU which specifies the full LDAP path name of the OU to which the virtual machine belongs.
- full
Name String - The full name of the user of this virtual machine.
- join
Domain String - The domain that the virtual machine should join.
- organization
Name String - The organization name this virtual machine is being installed for.
- product
Key String - The product key for this virtual machine.
- run
Once List<String>Command Lists - A list of commands to run at first user logon, after guest customization.
- time
Zone Number - The new time zone for the virtual machine. This is a sysprep-dictated timezone code.
- workgroup String
- The workgroup for this virtual machine if not joining a domain.
VirtualMachineDisk, VirtualMachineDiskArgs
- Label string
- A unique label for this disk.
- Attach bool
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- Controller
Type string - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- Datastore
Id string - The datastore ID for this virtual disk, if different than the virtual machine.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Disk
Mode string - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- Disk
Sharing string - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- Eagerly
Scrub bool - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- Io
Limit int - The upper limit of IOPS that this disk can use.
- Io
Reservation int - The I/O guarantee that this disk has, in IOPS.
- int
- The share count for this disk when the share level is custom.
- string
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- Keep
On boolRemove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- Key int
- The ID of the device within the virtual machine.
- Path string
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- Size int
- The size of the disk, in GB.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual disk in VM.
- Thin
Provisioned bool - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- Unit
Number int - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Write
Through bool - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
- Label string
- A unique label for this disk.
- Attach bool
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- Controller
Type string - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- Datastore
Id string - The datastore ID for this virtual disk, if different than the virtual machine.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Disk
Mode string - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- Disk
Sharing string - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- Eagerly
Scrub bool - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- Io
Limit int - The upper limit of IOPS that this disk can use.
- Io
Reservation int - The I/O guarantee that this disk has, in IOPS.
- int
- The share count for this disk when the share level is custom.
- string
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- Keep
On boolRemove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- Key int
- The ID of the device within the virtual machine.
- Path string
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- Size int
- The size of the disk, in GB.
- Storage
Policy stringId - The ID of the storage policy to assign to the virtual disk in VM.
- Thin
Provisioned bool - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- Unit
Number int - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- Uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - Write
Through bool - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
- label String
- A unique label for this disk.
- attach Boolean
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- controller
Type String - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- datastore
Id String - The datastore ID for this virtual disk, if different than the virtual machine.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - disk
Mode String - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- disk
Sharing String - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- eagerly
Scrub Boolean - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- io
Limit Integer - The upper limit of IOPS that this disk can use.
- io
Reservation Integer - The I/O guarantee that this disk has, in IOPS.
- Integer
- The share count for this disk when the share level is custom.
- String
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- keep
On BooleanRemove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- key Integer
- The ID of the device within the virtual machine.
- path String
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- size Integer
- The size of the disk, in GB.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual disk in VM.
- thin
Provisioned Boolean - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- unit
Number Integer - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - write
Through Boolean - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
- label string
- A unique label for this disk.
- attach boolean
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- controller
Type string - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- datastore
Id string - The datastore ID for this virtual disk, if different than the virtual machine.
- device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - disk
Mode string - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- disk
Sharing string - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- eagerly
Scrub boolean - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- io
Limit number - The upper limit of IOPS that this disk can use.
- io
Reservation number - The I/O guarantee that this disk has, in IOPS.
- number
- The share count for this disk when the share level is custom.
- string
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- keep
On booleanRemove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- key number
- The ID of the device within the virtual machine.
- path string
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- size number
- The size of the disk, in GB.
- storage
Policy stringId - The ID of the storage policy to assign to the virtual disk in VM.
- thin
Provisioned boolean - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- unit
Number number - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- uuid string
- The UUID of the virtual machine. Also exposed as the
idof the resource. - write
Through boolean - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
- label str
- A unique label for this disk.
- attach bool
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- controller_
type str - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- datastore_
id str - The datastore ID for this virtual disk, if different than the virtual machine.
- device_
address str - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - disk_
mode str - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- disk_
sharing str - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- eagerly_
scrub bool - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- io_
limit int - The upper limit of IOPS that this disk can use.
- io_
reservation int - The I/O guarantee that this disk has, in IOPS.
- int
- The share count for this disk when the share level is custom.
- str
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- keep_
on_ boolremove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- key int
- The ID of the device within the virtual machine.
- path str
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- size int
- The size of the disk, in GB.
- storage_
policy_ strid - The ID of the storage policy to assign to the virtual disk in VM.
- thin_
provisioned bool - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- unit_
number int - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- uuid str
- The UUID of the virtual machine. Also exposed as the
idof the resource. - write_
through bool - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
- label String
- A unique label for this disk.
- attach Boolean
- If this is true, the disk is attached instead of created. Implies keep_on_remove.
- controller
Type String - The type of controller the disk should be connected to. Must be 'scsi', 'sata', 'nvme', or 'ide'.
- datastore
Id String - The datastore ID for this virtual disk, if different than the virtual machine.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - disk
Mode String - The mode of this this virtual disk for purposes of writes and snapshotting. Can be one of append, independent_nonpersistent, independent_persistent, nonpersistent, persistent, or undoable.
- disk
Sharing String - The sharing mode of this virtual disk. Can be one of sharingMultiWriter or sharingNone.
- eagerly
Scrub Boolean - The virtual disk file zeroing policy when thin_provision is not true. The default is false, which lazily-zeros the disk, speeding up thick-provisioned disk creation time.
- io
Limit Number - The upper limit of IOPS that this disk can use.
- io
Reservation Number - The I/O guarantee that this disk has, in IOPS.
- Number
- The share count for this disk when the share level is custom.
- String
- The share allocation level for this disk. Can be one of low, normal, high, or custom.
- keep
On BooleanRemove - Set to true to keep the underlying VMDK file when removing this virtual disk from configuration.
- key Number
- The ID of the device within the virtual machine.
- path String
- The full path of the virtual disk. This can only be provided if attach is set to true, otherwise it is a read-only value.
- size Number
- The size of the disk, in GB.
- storage
Policy StringId - The ID of the storage policy to assign to the virtual disk in VM.
- thin
Provisioned Boolean - If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
- unit
Number Number - The unique device number for this disk. This number determines where on the SCSI bus this device will be attached.
- uuid String
- The UUID of the virtual machine. Also exposed as the
idof the resource. - write
Through Boolean - If true, writes for this disk are sent directly to the filesystem immediately instead of being buffered.
VirtualMachineNetworkInterface, VirtualMachineNetworkInterfaceArgs
- Network
Id string - The ID of the network to connect this network interface to.
- Adapter
Type string - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- Bandwidth
Limit int - The upper bandwidth limit of this network interface, in Mbits/sec.
- Bandwidth
Reservation int - The bandwidth reservation of this network interface, in Mbits/sec.
- int
- The share count for this network interface when the share level is custom.
- string
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Key int
- The ID of the device within the virtual machine.
- Mac
Address string - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- Ovf
Mapping string - Mapping of network interface to OVF network.
- Physical
Function string - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- Use
Static boolMac - If true, the mac_address field is treated as a static MAC address and set accordingly.
- Network
Id string - The ID of the network to connect this network interface to.
- Adapter
Type string - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- Bandwidth
Limit int - The upper bandwidth limit of this network interface, in Mbits/sec.
- Bandwidth
Reservation int - The bandwidth reservation of this network interface, in Mbits/sec.
- int
- The share count for this network interface when the share level is custom.
- string
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- Device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - Key int
- The ID of the device within the virtual machine.
- Mac
Address string - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- Ovf
Mapping string - Mapping of network interface to OVF network.
- Physical
Function string - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- Use
Static boolMac - If true, the mac_address field is treated as a static MAC address and set accordingly.
- network
Id String - The ID of the network to connect this network interface to.
- adapter
Type String - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- bandwidth
Limit Integer - The upper bandwidth limit of this network interface, in Mbits/sec.
- bandwidth
Reservation Integer - The bandwidth reservation of this network interface, in Mbits/sec.
- Integer
- The share count for this network interface when the share level is custom.
- String
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key Integer
- The ID of the device within the virtual machine.
- mac
Address String - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- ovf
Mapping String - Mapping of network interface to OVF network.
- physical
Function String - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- use
Static BooleanMac - If true, the mac_address field is treated as a static MAC address and set accordingly.
- network
Id string - The ID of the network to connect this network interface to.
- adapter
Type string - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- bandwidth
Limit number - The upper bandwidth limit of this network interface, in Mbits/sec.
- bandwidth
Reservation number - The bandwidth reservation of this network interface, in Mbits/sec.
- number
- The share count for this network interface when the share level is custom.
- string
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- device
Address string - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key number
- The ID of the device within the virtual machine.
- mac
Address string - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- ovf
Mapping string - Mapping of network interface to OVF network.
- physical
Function string - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- use
Static booleanMac - If true, the mac_address field is treated as a static MAC address and set accordingly.
- network_
id str - The ID of the network to connect this network interface to.
- adapter_
type str - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- bandwidth_
limit int - The upper bandwidth limit of this network interface, in Mbits/sec.
- bandwidth_
reservation int - The bandwidth reservation of this network interface, in Mbits/sec.
- int
- The share count for this network interface when the share level is custom.
- str
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- device_
address str - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key int
- The ID of the device within the virtual machine.
- mac_
address str - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- ovf_
mapping str - Mapping of network interface to OVF network.
- physical_
function str - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- use_
static_ boolmac - If true, the mac_address field is treated as a static MAC address and set accordingly.
- network
Id String - The ID of the network to connect this network interface to.
- adapter
Type String - The controller type. Can be one of e1000, e1000e, sriov, vmxnet3, or vrdma.
- bandwidth
Limit Number - The upper bandwidth limit of this network interface, in Mbits/sec.
- bandwidth
Reservation Number - The bandwidth reservation of this network interface, in Mbits/sec.
- Number
- The share count for this network interface when the share level is custom.
- String
- The bandwidth share allocation level for this interface. Can be one of low, normal, high, or custom.
- device
Address String - An address internal to Terraform that helps locate the device when
keyis unavailable. This follows a convention ofCONTROLLER_TYPE:BUS_NUMBER:UNIT_NUMBER. Example:scsi:0:1means device unit1on SCSI bus0. - key Number
- The ID of the device within the virtual machine.
- mac
Address String - The MAC address of this network interface. Can only be manually set if use_static_mac is true.
- ovf
Mapping String - Mapping of network interface to OVF network.
- physical
Function String - The ID of the Physical SR-IOV NIC to attach to, e.g. '0000:d8:00.0'
- use
Static BooleanMac - If true, the mac_address field is treated as a static MAC address and set accordingly.
VirtualMachineOvfDeploy, VirtualMachineOvfDeployArgs
- Allow
Unverified boolSsl Cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- Deployment
Option string - The Deployment option to be chosen. If empty, the default option is used.
- Disk
Provisioning string - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- bool
- Allow properties with ovf:userConfigurable=false to be set.
- Ip
Allocation stringPolicy - The IP allocation policy.
- Ip
Protocol string - The IP protocol.
- Local
Ovf stringPath - The absolute path to the ovf/ova file in the local system.
- Ovf
Network Dictionary<string, string>Map - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- Remote
Ovf stringUrl - URL to the remote ovf/ova file to be deployed.
- Allow
Unverified boolSsl Cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- Deployment
Option string - The Deployment option to be chosen. If empty, the default option is used.
- Disk
Provisioning string - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- bool
- Allow properties with ovf:userConfigurable=false to be set.
- Ip
Allocation stringPolicy - The IP allocation policy.
- Ip
Protocol string - The IP protocol.
- Local
Ovf stringPath - The absolute path to the ovf/ova file in the local system.
- Ovf
Network map[string]stringMap - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- Remote
Ovf stringUrl - URL to the remote ovf/ova file to be deployed.
- allow
Unverified BooleanSsl Cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- deployment
Option String - The Deployment option to be chosen. If empty, the default option is used.
- disk
Provisioning String - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- Boolean
- Allow properties with ovf:userConfigurable=false to be set.
- ip
Allocation StringPolicy - The IP allocation policy.
- ip
Protocol String - The IP protocol.
- local
Ovf StringPath - The absolute path to the ovf/ova file in the local system.
- ovf
Network Map<String,String>Map - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- remote
Ovf StringUrl - URL to the remote ovf/ova file to be deployed.
- allow
Unverified booleanSsl Cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- deployment
Option string - The Deployment option to be chosen. If empty, the default option is used.
- disk
Provisioning string - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- boolean
- Allow properties with ovf:userConfigurable=false to be set.
- ip
Allocation stringPolicy - The IP allocation policy.
- ip
Protocol string - The IP protocol.
- local
Ovf stringPath - The absolute path to the ovf/ova file in the local system.
- ovf
Network {[key: string]: string}Map - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- remote
Ovf stringUrl - URL to the remote ovf/ova file to be deployed.
- allow_
unverified_ boolssl_ cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- deployment_
option str - The Deployment option to be chosen. If empty, the default option is used.
- disk_
provisioning str - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- bool
- Allow properties with ovf:userConfigurable=false to be set.
- ip_
allocation_ strpolicy - The IP allocation policy.
- ip_
protocol str - The IP protocol.
- local_
ovf_ strpath - The absolute path to the ovf/ova file in the local system.
- ovf_
network_ Mapping[str, str]map - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- remote_
ovf_ strurl - URL to the remote ovf/ova file to be deployed.
- allow
Unverified BooleanSsl Cert - Allow unverified ssl certificates while deploying ovf/ova from url.
- deployment
Option String - The Deployment option to be chosen. If empty, the default option is used.
- disk
Provisioning String - An optional disk provisioning. If set, all the disks in the deployed ovf will have the same specified disk type (e.g., thin provisioned).
- Boolean
- Allow properties with ovf:userConfigurable=false to be set.
- ip
Allocation StringPolicy - The IP allocation policy.
- ip
Protocol String - The IP protocol.
- local
Ovf StringPath - The absolute path to the ovf/ova file in the local system.
- ovf
Network Map<String>Map - The mapping of name of network identifiers from the ovf descriptor to network UUID in the VI infrastructure.
- remote
Ovf StringUrl - URL to the remote ovf/ova file to be deployed.
VirtualMachineVapp, VirtualMachineVappArgs
- Properties Dictionary<string, string>
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
- Properties map[string]string
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
- properties Map<String,String>
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
- properties {[key: string]: string}
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
- properties Mapping[str, str]
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
- properties Map<String>
- A map of customizable vApp properties and their values. Allows customization of VMs cloned from OVF templates which have customizable vApp properties.
VirtualMachineVtpm, VirtualMachineVtpmArgs
- Version string
- The version of the TPM device. Default is 2.0.
- Version string
- The version of the TPM device. Default is 2.0.
- version String
- The version of the TPM device. Default is 2.0.
- version string
- The version of the TPM device. Default is 2.0.
- version str
- The version of the TPM device. Default is 2.0.
- version String
- The version of the TPM device. Default is 2.0.
Import
An existing virtual machine can be imported into the Terraform state by providing the full path to the virtual machine.
Examples:
Import a virtual machine resource named foo located in the dc-01 datacenter.
$ pulumi import vsphere:index/virtualMachine:VirtualMachine vm /dc-01/vm/foo
NOTE: The
vmportion of the path is required by vSphere. If the virtual machine is located in a folder, the folder path needs to be included. This is because vSphere organizes virtual machines within a datacenter under thevmfolder, and any additional folders created within thevmfolder must be included in the path.
If the virtual machine foo is in a folder named bar, the import command would be:
$ pulumi import vsphere:index/virtualMachine:VirtualMachine vm /dc-01/vm/bar/foo
Additional Importing Requirements
Many of the requirements for cloning apply to importing. Although importing writes directly to the Terraform state, some rules can not be enforced during import time, so every effort should be made to ensure the correctness of the configuration before the import.
The following requirements apply to import:
- The disks must have a
labelargument assigned in a convention matchingHard Disk, starting with disk number 0, based on each virtual disk order on the SCSI bus. As an example, a disk on SCSI controller0with a unit number of0would be labeled asHard Disk 0, a disk on the same controller with a unit number of1would beHard Disk 1, but the next disk, which is on SCSI controller1with a unit number of0, still becomesHard Disk 2.
NOTE: Any custom
labelset at deployment of machine through Terraform, on import will not have the customlabeland will default toHard Disk _x_.
Disks are always imported with
keep_on_removeenabled until the firstpulumi uprun which will remove the setting for known disks. This process safeguards against naming or accounting mistakes in the disk configuration.The storage controller count for the resource is set to the number of contiguous storage controllers found, starting with the controller at SCSI bus number
0. If no storage controllers are discovered, the virtual machine is not eligible for import. For maximum compatibility, ensure that the virtual machine has the exact number of storage controllers needed and set the storage controller count accordingly.
After importing, you should run pulumi preview. Unless you have changed anything else in the configuration that would cause other attributes to change. The only difference should be configuration-only changes, which are typically comprised of:
The
importedflag will transition fromtruetofalse.The
keep_on_removeof known disks will transition fromtruetofalse.Configuration supplied in the
cloneblock, if present, will be persisted to state. This initial persistence operation does not perform any cloning or customization actions, nor does it force a new resource. After the first apply operation, further changes toclonewill force the creation of a new resource.
NOTE: Do not make any configuration changes to
cloneafter importing or upgrading from a legacy version of the provider before doing an initialpulumi upas these changes will not correctly force a new resource and your changes will have persisted to state, preventing further plans from correctly triggering a diff.
These changes only update Terraform state when applied. Hence, it is safe to run when the virtual machine is running. If more settings are modified, you may need to plan maintenance accordingly for any necessary virtual machine re-configurations.
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- vSphere pulumi/pulumi-vsphere
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
vsphereTerraform Provider.
published on Tuesday, Mar 24, 2026 by Pulumi
