This a plugin for HashiCorp Packer. It uses native vSphere API, and creates virtual machines remotely.
vsphere-iso builder creates new VMs from scratch.
vsphere-clone builder clones VMs from existing templates.
- VMware Player is not required.
- Official vCenter API is used, no ESXi host modification is required.
- Download binaries from the releases page.
- Install the plugins, or simply put them into the same directory with JSON templates. On Linux and macOS run
chmod +xon the files.
See complete Ubuntu, Windows, and macOS templates in the examples folder.
vcenter_server(string) - vCenter server hostname.username(string) - vSphere username.password(string) - vSphere password.insecure_connection(boolean) - Do not validate vCenter server's TLS certificate. Defaults tofalse.datacenter(string) - VMware datacenter name. Required if there is more than one datacenter in vCenter.
vm_name(string) - Name of the new VM to create.folder(string) - VM folder to create the VM in.host(string) - ESXi host where target VM is created. A full path must be specified if the host is in a folder. For examplefolder/host. See theSpecifying Clusters and Hostssection above for more details.cluster(string) - ESXi cluster where target VM is created. See Working with Clusters section.resource_pool(string) - VMWare resource pool. Defaults to the root resource pool of thehostorcluster.datastore(string) - VMWare datastore. Required ifhostis a cluster, or ifhosthas multiple datastores.
template(string) - Name of source VM. Path is optional.linked_clone(boolean) - Create VM as a linked clone from latest snapshot. Defaults tofalse.
CPUs(number) - Number of CPU sockets.CPU_limit(number) - Upper limit of available CPU resources in MHz.CPU_reservation(number) - Amount of reserved CPU resources in MHz.CPU_hot_plug(boolean) - Enable CPU hot plug setting for virtual machine. Defaults tofalse.RAM(number) - Amount of RAM in MB.RAM_reservation(number) - Amount of reserved RAM in MB.RAM_reserve_all(boolean) - Reserve all available RAM. Defaults tofalse. Cannot be used together withRAM_reservation.RAM_hot_plug(boolean) - Enable RAM hot plug setting for virtual machine. Defaults tofalse.disk_size(number) - The size of the disk in MB.NestedHV(boolean) - Enable nested hardware virtualization for VM. Defaults tofalse.configuration_parameters(map) - Custom parameters.boot_order(string) - Priority of boot devices. Defaults todisk,cdrom
vm_version(number) - Set VM hardware version. Defaults to the most current VM hardware version supported by vCenter. See VMWare article 1003746 for the full list of supported VM hardware versions.guest_os_type(string) - Set VM OS type. Defaults tootherGuest. See here for a full list of possible values.disk_controller_type(string) - Set VM disk controller type. Examplepvscsi.disk_thin_provisioned(boolean) - Enable VMDK thin provisioning for VM. Defaults tofalse.network(string) - Set network VM will be connected to.network_card(string) - Set VM network card type. Examplevmxnet3.usb_controller(boolean) - Create US controller for virtual machine. Defaults tofalse.
boot_wait(string) Amount of time to wait for the VM to boot. Examples 45s and 10m. Defaults to 10 seconds. See the Go Lang ParseDuration documentation for full details.boot_command(array of strings) - List of commands to type when the VM is first booted. Used to initalize the operating system installer.floppy_dirs(array of strings) - Seems to not do anything useful yet. Not implemented.floppy_files(array of strings) - List of local files to be mounted to the VM floppy drive. Can be used to make Debian preseed or RHEL kickstart files available to the VM.floppy_img_path(string) - Data store path to a floppy image that will be mounted to the VM. Cannot be used withfloppy_filesorfloppy_diroptions. Example[datastore1] ISO/VMware Tools/10.2.0/pvscsi-Windows8.flp.iso_paths(array of strings) - List of data store paths to ISO files that will be mounted to the VM. Example"[datastore1] ISO/ubuntu-16.04.3-server-amd64.iso".
-
communicator-ssh(default),winrm, ornone. -
ssh_username(string) - Username in guest OS. -
ssh_password(string) - Password to access guest OS. Only specifyssh_passwordorssh_private_key_file, but not both. -
ssh_private_key_file(string) - Path to the SSH private key file to access guest OS. Only specifyssh_passwordorssh_private_key_file, but not both. -
winrm_username(string) - Username in guest OS. -
winrm_password(string) - Password to access guest OS. -
shutdown_command(string) - Specify a VM guest shutdown command. VMware guest tools are used by default. -
shutdown_timeout(string) - Amount of time to wait for graceful VM shutdown. Examples 45s and 10m. Defaults to 5m(5 minutes). See the Go Lang ParseDuration documentation for full details.
create_snapshot(boolean) - Create a snapshot when set totrue, so the VM can be used as a base for linked clones. Defaults tofalse.convert_to_template(boolean) - Convert VM to a template. Defaults tofalse.
Only use the host option. Optionally specify a resource_pool:
"host": "esxi-1.vsphere65.test",
"resource_pool": "pool1",
Use the cluster and host parameters:
"cluster": "cluster1",
"host": "esxi-2.vsphere65.test",
Only use the cluster option. Optionally specify a resource_pool:
"cluster": "cluster2",
"resource_pool": "pool1",