diff --git a/builder/vmware/common/export_config.go b/builder/vmware/common/export_config.go index edd5fa87c..1ae85d759 100644 --- a/builder/vmware/common/export_config.go +++ b/builder/vmware/common/export_config.go @@ -16,23 +16,21 @@ type ExportConfig struct { // Since ovftool is only capable of password based authentication // remote_password must be set when exporting the VM. Format string `mapstructure:"format" required:"false"` - // Extra options to pass to ovftool - // during export. Each item in the array is a new argument. The options - // --noSSLVerify, --skipManifestCheck, and --targetType are reserved, - // and should not be passed to this argument. - // Currently, exporting the build VM (with ovftool) is only supported when - // building on ESXi e.g. when remote_type is set to esx5. See the - // Building on a Remote vSphere - // Hypervisor + // Extra options to pass to ovftool during export. Each item in the array + // is a new argument. The options `--noSSLVerify`, `--skipManifestCheck`, + // and `--targetType` are reserved, and should not be passed to this + // argument. Currently, exporting the build VM (with ovftool) is only + // supported when building on ESXi e.g. when `remote_type` is set to + // `esx5`. See the [Building on a Remote vSphere + // Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) // section below for more info. OVFToolOptions []string `mapstructure:"ovftool_options" required:"false"` - // Defaults to false. When enabled, Packer will - // not export the VM. Useful if the build output is not the resultant - // image, but created inside the VM. - // Currently, exporting the build VM is only supported when building on - // ESXi e.g. when remote_type is set to esx5. See the Building on a + // Defaults to `false`. When enabled, Packer will not export the VM. Useful + // if the build output is not the resultant image, but created inside the + // VM. Currently, exporting the build VM is only supported when building on + // ESXi e.g. when `remote_type` is set to `esx5`. See the [Building on a // Remote vSphere - // Hypervisor + // Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) // section below for more info. SkipExport bool `mapstructure:"skip_export" required:"false"` // Set this to true if you would like to keep diff --git a/builder/vmware/common/hw_config.go b/builder/vmware/common/hw_config.go index bce8e11fb..d02e5baa8 100644 --- a/builder/vmware/common/hw_config.go +++ b/builder/vmware/common/hw_config.go @@ -25,11 +25,11 @@ type HWConfig struct { // such as hostonly, nat, or bridged. If the network is not one of these // values, then it is assumed to be a VMware network device. (VMnet0..x) Network string `mapstructure:"network" required:"false"` - // This is the ethernet adapter type the the - // virtual machine will be created with. By default the e1000 network adapter - // type will be used by Packer. For more information, please consult the - // - // Choosing a network adapter for your virtual machine for desktop VMware + // This is the ethernet adapter type the the virtual machine will be + // created with. By default the `e1000` network adapter type will be used + // by Packer. For more information, please consult [Choosing a network + // adapter for your virtual + // machine](https://kb.vmware.com/s/article/1001805) for desktop VMware // clients. For ESXi, refer to the proper ESXi documentation. NetworkAdapterType string `mapstructure:"network_adapter_type" required:"false"` // Specify whether to enable VMware's virtual soundcard @@ -41,12 +41,53 @@ type HWConfig struct { // the usb_xhci.present property. USB bool `mapstructure:"usb" required:"false"` // This specifies a serial port to add to the VM. - // It has a format of Type:option1,option2,.... The field Type can be one - // of the following values: FILE, DEVICE, PIPE, AUTO, or NONE. + // It has a format of `Type:option1,option2,...`. The field `Type` can be one + // of the following values: `FILE`, `DEVICE`, `PIPE`, `AUTO`, or `NONE`. + // + // * `FILE:path(,yield)` - Specifies the path to the local file to be used as the + // serial port. + // * `yield` (bool) - This is an optional boolean that specifies whether + // the vm should yield the cpu when polling the port. + // By default, the builder will assume this as `FALSE`. + // * `DEVICE:path(,yield)` - Specifies the path to the local device to be used + // as the serial port. If `path` is empty, then + // default to the first serial port. + // * `yield` (bool) - This is an optional boolean that specifies whether + // the vm should yield the cpu when polling the port. + // By default, the builder will assume this as `FALSE`. + // * `PIPE:path,endpoint,host(,yield)` - Specifies to use the named-pipe "path" + // as a serial port. This has a few + // options that determine how the VM + // should use the named-pipe. + // * `endpoint` (string) - Chooses the type of the VM-end, which can be + // either a `client` or `server`. + // * `host` (str`ing) - Chooses the type of the host-end, which can be either + // an `app` (application) or `vm` (another virtual-machine). + // * `yield` (bool) - This is an optional boolean that specifies whether + // the vm should yield the cpu when polling the port. + // By default, the builder will assume this as `FALSE`. + // + // * `AUTO:(yield)` - Specifies to use auto-detection to determine the serial + // port to use. This has one option to determine how the VM + // should support the serial port. + // * `yield` (bool) - This is an optional boolean that specifies whether + // the vm should yield the cpu when polling the port. + // By default, the builder will assume this as `FALSE`. + // * `NONE` - Specifies to not use a serial port. (default) Serial string `mapstructure:"serial" required:"false"` // This specifies a parallel port to add to the VM. It - // has the format of Type:option1,option2,.... Type can be one of the - // following values: FILE, DEVICE, AUTO, or NONE. + // has the format of `Type:option1,option2,...`. Type can be one of the + // following values: `FILE`, `DEVICE`, `AUTO`, or `NONE`. + // + // * `FILE:path` - Specifies the path to the local file to be used for the + // parallel port. + // * `DEVICE:path` - Specifies the path to the local device to be used for the + // parallel port. + // * `AUTO:direction` - Specifies to use auto-detection to determine the + // parallel port. Direction can be `BI` to specify + // bidirectional communication or `UNI` to specify + // unidirectional communication. + // * `NONE` - Specifies to not use a parallel port. (default) Parallel string `mapstructure:"parallel" required:"false"` } diff --git a/builder/vmware/common/ssh_config.go b/builder/vmware/common/ssh_config.go index 47cb9b917..8c59cdedc 100644 --- a/builder/vmware/common/ssh_config.go +++ b/builder/vmware/common/ssh_config.go @@ -1,3 +1,5 @@ +//go:generate struct-markdown + package common import ( @@ -12,8 +14,10 @@ type SSHConfig struct { // These are deprecated, but we keep them around for BC // TODO(@mitchellh): remove - SSHSkipRequestPty bool `mapstructure:"ssh_skip_request_pty"` - SSHWaitTimeout time.Duration `mapstructure:"ssh_wait_timeout"` + SSHSkipRequestPty bool `mapstructure:"ssh_skip_request_pty"` + // These are deprecated, but we keep them around for BC + // TODO(@mitchellh): remove + SSHWaitTimeout time.Duration `mapstructure:"ssh_wait_timeout"` } func (c *SSHConfig) Prepare(ctx *interpolate.Context) []error { diff --git a/builder/vmware/common/tools_config.go b/builder/vmware/common/tools_config.go index b9cb0e1be..4830ff30c 100644 --- a/builder/vmware/common/tools_config.go +++ b/builder/vmware/common/tools_config.go @@ -11,13 +11,12 @@ type ToolsConfig struct { // upload into the VM. Valid values are darwin, linux, and windows. By // default, this is empty, which means VMware tools won't be uploaded. ToolsUploadFlavor string `mapstructure:"tools_upload_flavor" required:"false"` - // The path in the VM to upload the - // VMware tools. This only takes effect if tools_upload_flavor is non-empty. - // This is a configuration - // template that has a single - // valid variable: Flavor, which will be the value of tools_upload_flavor. - // By default the upload path is set to {{.Flavor}}.iso. This setting is not - // used when remote_type is esx5. + // The path in the VM to upload the VMware tools. This only takes effect if + // `tools_upload_flavor` is non-empty. This is a [configuration + // template](/docs/templates/engine.html) that has a single valid variable: + // `Flavor`, which will be the value of `tools_upload_flavor`. By default + // the upload path is set to `{{.Flavor}}.iso`. This setting is not used + // when `remote_type` is `esx5`. ToolsUploadPath string `mapstructure:"tools_upload_path" required:"false"` } diff --git a/builder/vmware/iso/config.go b/builder/vmware/iso/config.go index b07720d9b..23b24aa1f 100644 --- a/builder/vmware/iso/config.go +++ b/builder/vmware/iso/config.go @@ -38,15 +38,15 @@ type Config struct { // fixed-size virtual hard disks, so the actual file representing the disk will // not use the full size unless it is full. AdditionalDiskSize []uint `mapstructure:"disk_additional_size" required:"false"` - // The adapter type of the VMware virtual disk - // to create. This option is for advanced usage, modify only if you know what - // you're doing. Some of the options you can specify are ide, sata, nvme - // or scsi (which uses the "lsilogic" scsi interface by default). If you - // specify another option, Packer will assume that you're specifying a scsi - // interface of that specified type. For more information, please consult the - // - // Virtual Disk Manager User's Guide for desktop VMware clients. - // For ESXi, refer to the proper ESXi documentation. + // The adapter type of the VMware virtual disk to create. This option is + // for advanced usage, modify only if you know what you're doing. Some of + // the options you can specify are `ide`, `sata`, `nvme` or `scsi` (which + // uses the "lsilogic" scsi interface by default). If you specify another + // option, Packer will assume that you're specifying a `scsi` interface of + // that specified type. For more information, please consult [Virtual Disk + // Manager User's Guide](http://www.vmware.com/pdf/VirtualDiskManager.pdf) + // for desktop VMware clients. For ESXi, refer to the proper ESXi + // documentation. DiskAdapterType string `mapstructure:"disk_adapter_type" required:"false"` // The filename of the virtual disk that'll be created, // without the extension. This defaults to packer. @@ -58,6 +58,28 @@ type Config struct { DiskSize uint `mapstructure:"disk_size" required:"false"` // The type of VMware virtual disk to create. This // option is for advanced usage. + // + // For desktop VMware clients: + // + // Type ID | Description + // ------- | --- + // `0` | Growable virtual disk contained in a single file (monolithic sparse). + // `1` | Growable virtual disk split into 2GB files (split sparse). + // `2` | Preallocated virtual disk contained in a single file (monolithic flat). + // `3` | Preallocated virtual disk split into 2GB files (split flat). + // `4` | Preallocated virtual disk compatible with ESX server (VMFS flat). + // `5` | Compressed disk optimized for streaming. + // + // The default is `1`. + // + // For ESXi, this defaults to `zeroedthick`. The available options for ESXi + // are: `zeroedthick`, `eagerzeroedthick`, `thin`. `rdm:dev`, `rdmp:dev`, + // `2gbsparse` are not supported. Due to default disk compaction, when using + // `zeroedthick` or `eagerzeroedthick` set `skip_compaction` to `true`. + // + // For more information, please consult the [Virtual Disk Manager User's + // Guide](https://www.vmware.com/pdf/VirtualDiskManager.pdf) for desktop + // VMware clients. For ESXi, refer to the proper ESXi documentation. DiskTypeId string `mapstructure:"disk_type_id" required:"false"` // Either "ovf", "ova" or "vmx", this specifies the output // format of the exported virtual machine. This defaults to "ovf". @@ -78,10 +100,10 @@ type Config struct { // changes to better support the operating system running in the // virtual machine. GuestOSType string `mapstructure:"guest_os_type" required:"false"` - // The vmx hardware - // version + // The [vmx hardware + // version](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003746) // for the new virtual machine. Only the default value has been tested, any - // other value is experimental. Default value is 9. + // other value is experimental. Default value is `9`. Version string `mapstructure:"version" required:"false"` // This is the name of the VMX file for the new virtual // machine, without the file extension. By default this is packer-BUILDNAME, @@ -89,12 +111,11 @@ type Config struct { VMName string `mapstructure:"vm_name" required:"false"` VMXDiskTemplatePath string `mapstructure:"vmx_disk_template_path"` - // Path to a configuration - // template that defines the - // contents of the virtual machine VMX file for VMware. This is for advanced - // users only as this can render the virtual machine non-functional. See - // below for more information. For basic VMX modifications, try - // vmx_data first. + // Path to a [configuration template](/docs/templates/engine.html) that + // defines the contents of the virtual machine VMX file for VMware. This is + // for **advanced users only** as this can render the virtual machine + // non-functional. See below for more information. For basic VMX + // modifications, try `vmx_data` first. VMXTemplatePath string `mapstructure:"vmx_template_path" required:"false"` ctx interpolate.Context diff --git a/website/source/docs/builders/vmware-iso.html.md.erb b/website/source/docs/builders/vmware-iso.html.md.erb index da23b8379..ca46fc324 100644 --- a/website/source/docs/builders/vmware-iso.html.md.erb +++ b/website/source/docs/builders/vmware-iso.html.md.erb @@ -49,412 +49,125 @@ self-install. Still, the example serves to show the basic configuration: } ``` -## ISO Configuration Reference +## VMware-ISO Builder Configuration Reference + +There are many configuration options available for the builder. In addition to +the items listed here, you will want to look at the general configuration +references for [ISO](#iso-configuration), +[HTTP](#http-directory-configuration), +[Floppy](#floppy-configuration), +[Boot](#boot-configuration), +[Driver](#driver-configuration), +[Hardware](#hardware-configuration), +[Output](#output-configuration), +[Run](#run-configuration), +[Shutdown](#shutdown-configuration), +[Communicator](#communicator-configuration), +[Tools](#tools-configuration), +[vmx](#vmx-configuration), +[Export](#export-configuration), +configuration references, which are +necessary for this build to succeed and can be found further down the page. + + +#### Optional: + +<%= partial "partials/builder/vmware/iso/Config-not-required" %> + +### ISO Configuration <%= partial "partials/common/ISOConfig" %> -### Required: +#### Required: <%= partial "partials/common/ISOConfig-required" %> -### Optional: +#### Optional: <%= partial "partials/common/ISOConfig-not-required" %> -## Configuration Reference - -There are many configuration options available for the VMware builder. They are -organized below into two categories: required and optional. Within each -category, the available options are alphabetized and described. - -In addition to the options listed here, a -[communicator](/docs/templates/communicator.html) can be configured for this -builder. - -### Optional: - -- `boot_command` (array of strings) - This is an array of commands to type - when the virtual machine is first booted. The goal of these commands should - be to type just enough to initialize the operating system installer. Special - keys can be typed as well, and are covered in the section below on the - boot command. If this is not specified, it is assumed the installer will - start itself. - -- `boot_wait` (string) - The time to wait after booting the initial virtual - machine before typing the `boot_command`. The value of this should be - a duration. Examples are `5s` and `1m30s` which will cause Packer to wait - five seconds and one minute 30 seconds, respectively. If this isn't - specified, the default is `10s` or 10 seconds. - -- `cpus` (number) - The number of cpus to use when building the VM. - -- `cores` (number) - The number of cores per socket to use when building the VM. - This corresponds to the `cpuid.coresPerSocket` option in the .vmx file. - -- `cdrom_adapter_type` (string) - The adapter type (or bus) that will be used - by the cdrom device. This is chosen by default based on the disk adapter - type. VMware tends to lean towards `ide` for the cdrom device unless - `sata` is chosen for the disk adapter and so Packer attempts to mirror - this logic. This field can be specified as either `ide`, `sata`, or `scsi`. - -- `disable_vnc` (boolean) - Whether to create a VNC connection or not. - A `boot_command` cannot be used when this is `true`. Defaults to `false`. - -- `disk_adapter_type` (string) - The adapter type of the VMware virtual disk - to create. This option is for advanced usage, modify only if you know what - you're doing. Some of the options you can specify are `ide`, `sata`, `nvme` - or `scsi` (which uses the "lsilogic" scsi interface by default). If you - specify another option, Packer will assume that you're specifying a `scsi` - interface of that specified type. For more information, please consult the - - Virtual Disk Manager User's Guide for desktop VMware clients. - For ESXi, refer to the proper ESXi documentation. - -- `disk_additional_size` (array of integers) - The size(s) of any additional - hard disks for the VM in megabytes. If this is not specified then the VM - will only contain a primary hard disk. The builder uses expandable, not - fixed-size virtual hard disks, so the actual file representing the disk will - not use the full size unless it is full. - -- `disk_size` (number) - The size of the hard disk for the VM in megabytes. - The builder uses expandable, not fixed-size virtual hard disks, so the - actual file representing the disk will not use the full size unless it - is full. By default this is set to `40000` (about 40 GB). - -- `disk_type_id` (string) - The type of VMware virtual disk to create. This - option is for advanced usage. - - For desktop VMware clients: - - Type ID | Description - --- | --- - `0` | Growable virtual disk contained in a single file (monolithic sparse). - `1` | Growable virtual disk split into 2GB files (split sparse). - `2` | Preallocated virtual disk contained in a single file (monolithic flat). - `3` | Preallocated virtual disk split into 2GB files (split flat). - `4` | Preallocated virtual disk compatible with ESX server (VMFS flat). - `5` | Compressed disk optimized for streaming. - - The default is `1`. - - For ESXi, this defaults to `zeroedthick`. The available options for ESXi - are: `zeroedthick`, `eagerzeroedthick`, `thin`. `rdm:dev`, `rdmp:dev`, - `2gbsparse` are not supported. Due to default disk compaction, when using - `zeroedthick` or `eagerzeroedthick` set `skip_compaction` to `true`. - - For more information, please consult the [Virtual Disk Manager User's - Guide](https://www.vmware.com/pdf/VirtualDiskManager.pdf) for desktop - VMware clients. For ESXi, refer to the proper ESXi documentation. - -- `display_name` (string) - The name that will appear in your vSphere client, - and will be used for the vmx basename. This will override the "displayname" - value in your vmx file. It will also override the "displayname" if you have - set it in the "vmx_data" Packer option. This option is useful if you are - chaining vmx builds and want to make sure that the display name of each step - in the chain is unique. - -- `floppy_dirs` (array of strings) - A list of directories to place onto - the floppy disk recursively. This is similar to the `floppy_files` option - except that the directory structure is preserved. This is useful for when - your floppy disk includes drivers or if you just want to organize it's - contents as a hierarchy. Wildcard characters (\*, ?, and \[\]) are allowed. - -- `floppy_files` (array of strings) - A list of files to place onto a floppy - disk that is attached when the VM is booted. This is most useful for - unattended Windows installs, which look for an `Autounattend.xml` file on - removable media. By default, no floppy will be attached. All files listed in - this setting get placed into the root directory of the floppy and the floppy - is attached as the first floppy device. Currently, no support exists for - creating sub-directories on the floppy. Wildcard characters (\*, ?, - and \[\]) are allowed. Directory names are also allowed, which will add all - the files found in the directory to the floppy. - -- `fusion_app_path` (string) - Path to "VMware Fusion.app". By default this is - `/Applications/VMware Fusion.app` but this setting allows you to - customize this. - -- `guest_os_type` (string) - The guest OS type being installed. This will be - set in the VMware VMX. By default this is `other`. By specifying a more - specific OS type, VMware may perform some optimizations or virtual hardware - changes to better support the operating system running in the - virtual machine. - -- `headless` (boolean) - Packer defaults to building VMware virtual machines - by launching a GUI that shows the console of the machine being built. When - this value is set to `true`, the machine will start without a console. For - VMware machines, Packer will output VNC connection information in case you - need to connect to the console to debug the build process. - -- `http_directory` (string) - Path to a directory to serve using an - HTTP server. The files in this directory will be available over HTTP that - will be requestable from the virtual machine. This is useful for hosting - kickstart files and so on. By default this is an empty string, which means - no HTTP server will be started. The address and port of the HTTP server will - be available as variables in `boot_command`. This is covered in more detail - below. - -- `http_port_min` and `http_port_max` (number) - These are the minimum and - maximum port to use for the HTTP server started to serve the - `http_directory`. Because Packer often runs in parallel, Packer will choose - a randomly available port in this range to run the HTTP server. If you want - to force the HTTP server to be on one port, make this minimum and maximum - port the same. By default the values are `8000` and `9000`, respectively. - -- `memory` (number) - The amount of memory to use when building the VM - in megabytes. - -- `network` (string) - This is the network type that the virtual machine will - be created with. This can be one of the generic values that map to a device - such as `hostonly`, `nat`, or `bridged`. If the network is not one of these - values, then it is assumed to be a VMware network device. (VMnet0..x) - -- `network_adapter_type` (string) - This is the ethernet adapter type the the - virtual machine will be created with. By default the `e1000` network adapter - type will be used by Packer. For more information, please consult the - - Choosing a network adapter for your virtual machine for desktop VMware - clients. For ESXi, refer to the proper ESXi documentation. - -- `output_directory` (string) - This is the path to the directory where the - resulting virtual machine will be created. This may be relative or absolute. - If relative, the path is relative to the working directory when `packer` - is executed. This directory must not exist or be empty prior to running - the builder. By default this is `output-BUILDNAME` where "BUILDNAME" is the - name of the build. - -- `parallel` (string) - This specifies a parallel port to add to the VM. It - has the format of `Type:option1,option2,...`. Type can be one of the - following values: `FILE`, `DEVICE`, `AUTO`, or `NONE`. - - * `FILE:path` - Specifies the path to the local file to be used for the - parallel port. - * `DEVICE:path` - Specifies the path to the local device to be used for the - parallel port. - * `AUTO:direction` - Specifies to use auto-detection to determine the - parallel port. Direction can be `BI` to specify - bidirectional communication or `UNI` to specify - unidirectional communication. - * `NONE` - Specifies to not use a parallel port. (default) - -- `remote_cache_datastore` (string) - The path to the datastore where - supporting files will be stored during the build on the remote machine. By - default this is the same as the `remote_datastore` option. This only has an - effect if `remote_type` is enabled. - -- `remote_cache_directory` (string) - The path where the ISO and/or floppy - files will be stored during the build on the remote machine. The path is - relative to the `remote_cache_datastore` on the remote machine. By default - this is `packer_cache`. This only has an effect if `remote_type` - is enabled. - -- `remote_datastore` (string) - The path to the datastore where the resulting - VM will be stored when it is built on the remote machine. By default this - is `datastore1`. This only has an effect if `remote_type` is enabled. - -- `remote_host` (string) - The host of the remote machine used for access. - This is only required if `remote_type` is enabled. - -- `remote_password` (string) - The SSH password for the user used to access - the remote machine. By default this is empty. This only has an effect if - `remote_type` is enabled. - -- `remote_private_key_file` (string) - The path to the PEM encoded private key - file for the user used to access the remote machine. By default this is empty. - This only has an effect if `remote_type` is enabled. - -- `remote_type` (string) - The type of remote machine that will be used to - build this VM rather than a local desktop product. The only value accepted - for this currently is `esx5`. If this is not set, a desktop product will - be used. By default, this is not set. - -- `remote_username` (string) - The username for the SSH user that will access - the remote machine. This is required if `remote_type` is enabled. - -- `serial` (string) - This specifies a serial port to add to the VM. - It has a format of `Type:option1,option2,...`. The field `Type` can be one - of the following values: `FILE`, `DEVICE`, `PIPE`, `AUTO`, or `NONE`. - - * `FILE:path(,yield)` - Specifies the path to the local file to be used as the - serial port. - * `yield` (bool) - This is an optional boolean that specifies whether - the vm should yield the cpu when polling the port. - By default, the builder will assume this as `FALSE`. - * `DEVICE:path(,yield)` - Specifies the path to the local device to be used - as the serial port. If `path` is empty, then - default to the first serial port. - * `yield` (bool) - This is an optional boolean that specifies whether - the vm should yield the cpu when polling the port. - By default, the builder will assume this as `FALSE`. - * `PIPE:path,endpoint,host(,yield)` - Specifies to use the named-pipe "path" - as a serial port. This has a few - options that determine how the VM - should use the named-pipe. - * `endpoint` (string) - Chooses the type of the VM-end, which can be - either a `client` or `server`. - * `host` (string) - Chooses the type of the host-end, which can be either - an `app` (application) or `vm` (another virtual-machine). - * `yield` (bool) - This is an optional boolean that specifies whether - the vm should yield the cpu when polling the port. - By default, the builder will assume this as `FALSE`. - - * `AUTO:(yield)` - Specifies to use auto-detection to determine the serial - port to use. This has one option to determine how the VM - should support the serial port. - * `yield` (bool) - This is an optional boolean that specifies whether - the vm should yield the cpu when polling the port. - By default, the builder will assume this as `FALSE`. - * `NONE` - Specifies to not use a serial port. (default) - -- `shutdown_command` (string) - The command to use to gracefully shut down the - machine once all the provisioning is done. By default this is an empty - string, which tells Packer to just forcefully shut down the machine. - -- `shutdown_timeout` (string) - The amount of time to wait after executing the - `shutdown_command` for the virtual machine to actually shut down. If it - doesn't shut down in this time, it is an error. By default, the timeout is - `5m` or five minutes. - -- `skip_compaction` (boolean) - VMware-created disks are defragmented and - compacted at the end of the build process using `vmware-vdiskmanager` or - `vmkfstools` in ESXi. In certain rare cases, this might actually end up - making the resulting disks slightly larger. If you find this to be the case, - you can disable compaction using this configuration value. Defaults to - `false`. Default to `true` for ESXi when `disk_type_id` is not explicitly - defined and `false` otherwise. - -- `skip_export` (boolean) - Defaults to `false`. When enabled, Packer will - not export the VM. Useful if the build output is not the resultant - image, but created inside the VM. - Currently, exporting the build VM is only supported when building on - ESXi e.g. when `remote_type` is set to `esx5`. See the [Building on a - Remote vSphere - Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) - section below for more info. - -- `keep_registered` (boolean) - Set this to `true` if you would like to keep - the VM registered with the remote ESXi server. If you do not need to export - the vm, then also set `skip_export: true` in order to avoid an unnecessary - step of using ovftool to export the vm. Defaults to `false`. - -- `ovftool_options` (array of strings) - Extra options to pass to ovftool - during export. Each item in the array is a new argument. The options - `--noSSLVerify`, `--skipManifestCheck`, and `--targetType` are reserved, - and should not be passed to this argument. - Currently, exporting the build VM (with ovftool) is only supported when - building on ESXi e.g. when `remote_type` is set to `esx5`. See the - [Building on a Remote vSphere - Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) - section below for more info. - -- `skip_validate_credentials` (boolean) - When Packer is preparing to run a - remote esxi build, and export is not disable, by default it runs a no-op - ovftool command to make sure that the remote_username and remote_password - given are valid. If you set this flag to `true`, Packer will skip this - validation. Default: `false`. - -- `sound` (boolean) - Specify whether to enable VMware's virtual soundcard - device when building the VM. Defaults to `false`. - -- `tools_upload_flavor` (string) - The flavor of the VMware Tools ISO to - upload into the VM. Valid values are `darwin`, `linux`, and `windows`. By - default, this is empty, which means VMware tools won't be uploaded. - -- `tools_upload_path` (string) - The path in the VM to upload the - VMware tools. This only takes effect if `tools_upload_flavor` is non-empty. - This is a [configuration - template](/docs/templates/engine.html) that has a single - valid variable: `Flavor`, which will be the value of `tools_upload_flavor`. - By default the upload path is set to `{{.Flavor}}.iso`. This setting is not - used when `remote_type` is `esx5`. - -- `usb` (boolean) - Enable VMware's USB bus when building the guest VM. - Defaults to `false`. To enable usage of the XHCI bus for USB 3 (5 Gbit/s), - one can use the `vmx_data` option to enable it by specifying `true` for - the `usb_xhci.present` property. - -- `version` (string) - The [vmx hardware - version](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003746) - for the new virtual machine. Only the default value has been tested, any - other value is experimental. Default value is `9`. - -- `vm_name` (string) - This is the name of the VMX file for the new virtual - machine, without the file extension. By default this is `packer-BUILDNAME`, - where "BUILDNAME" is the name of the build. - -- `vmdk_name` (string) - The filename of the virtual disk that'll be created, - without the extension. This defaults to `packer`. - -- `vmx_data` (object of key/value strings) - Arbitrary key/values to enter - into the virtual machine VMX file. This is for advanced users who want to - set properties that aren't yet supported by the builder. - -- `vmx_data_post` (object of key/value strings) - Identical to `vmx_data`, - except that it is run after the virtual machine is shutdown, and before the - virtual machine is exported. - -- `vmx_remove_ethernet_interfaces` (boolean) - Remove all ethernet interfaces - from the VMX file after building. This is for advanced users who understand - the ramifications, but is useful for building Vagrant boxes since Vagrant - will create ethernet interfaces when provisioning a box. Defaults to - `false`. - -- `vmx_template_path` (string) - Path to a [configuration - template](/docs/templates/engine.html) that defines the - contents of the virtual machine VMX file for VMware. This is for **advanced - users only** as this can render the virtual machine non-functional. See - below for more information. For basic VMX modifications, try - `vmx_data` first. - -- `vnc_bind_address` (string / IP address) - The IP address that should be - binded to for VNC. By default packer will use `127.0.0.1` for this. If you - wish to bind to all interfaces use `0.0.0.0`. - -- `vnc_disable_password` (boolean) - Don't auto-generate a VNC password that - is used to secure the VNC communication with the VM. This must be set to - `true` if building on ESXi 6.5 and 6.7 with VNC enabled. Defaults to - `false`. - -- `vnc_port_min` and `vnc_port_max` (number) - The minimum and maximum port - to use for VNC access to the virtual machine. The builder uses VNC to type - the initial `boot_command`. Because Packer generally runs in parallel, - Packer uses a randomly chosen port in this range that appears available. By - default this is `5900` to `6000`. The minimum and maximum ports are - inclusive. - -## Boot Command - -The `boot_command` configuration is very important: it specifies the keys to -type when the virtual machine is first booted in order to start the OS -installer. This command is typed after `boot_wait`, which gives the virtual -machine some time to actually load the ISO. - -As documented above, the `boot_command` is an array of strings. The strings are -all typed in sequence. It is an array only to improve readability within the -template. - -The boot command is "typed" character for character over a VNC connection to the -machine, simulating a human actually typing the keyboard. - --> Keystrokes are typed as separate key up/down events over VNC with a -default 100ms delay. The delay alleviates issues with latency and CPU -contention. You can tune this delay on a per-builder basis by specifying -"boot_key_interval" in your Packer template, for example: - -``` -{ - "builders": [ - { - "type": "vmware-iso", - "boot_key_interval": "10ms" - ... - } - ] -} -``` - -<%= partial "partials/builders/boot-command" %> +### Http directory configuration + +<%= partial "partials/common/HTTPConfig" %> +#### Optional: + +<%= partial "partials/common/HTTPConfig-not-required" %> + +### Floppy configuration + +<%= partial "partials/common/FloppyConfig" %> + +#### Optional: + +<%= partial "partials/common/FloppyConfig-not-required" %> + +### Shutdown configuration + +#### Optional: + +<%= partial "partials/common/shutdowncommand/ShutdownConfig-not-required" %> + +### Driver configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/DriverConfig-not-required" %> + +### Hardware configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/HWConfig-not-required" %> + +### Output configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/OutputConfig-not-required" %> + +### Run configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/RunConfig-not-required" %> + +### Tools configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/ToolsConfig-not-required" %> + +### VMX configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/VMXConfig-not-required" %> + +### Export configuration + +#### Optional: + +<%= partial "partials/builder/vmware/common/ExportConfig-not-required" %> + +### Communicator configuration + +#### Optional common fields: + +<%= partial "partials/helper/communicator/Config-not-required" %> + +#### Optional SSH fields: + +<%= partial "partials/helper/communicator/SSH-not-required" %> +<%= partial "partials/builder/vmware/common/SSHConfig-not-required" %> + +#### Optional WinRM fields: + +<%= partial "partials/helper/communicator/WinRM-not-required" %> + +## Boot Configuration + +<%= partial "partials/common/bootcommand/BootConfig" %> +<%= partial "partials/common/bootcommand/VNCConfig" %> -> **Note**: for the `HTTPIP` to be resolved correctly, your VM's network configuration has to include a `hostonly` or `nat` type network interface. @@ -462,22 +175,10 @@ If you are using this feature, it is recommended to leave the default network configuration while you are building the VM, and use the `vmx_data_post` hook to modify the network configuration after the VM is done building. -Example boot command. This is actually a working boot command used to start an -Ubuntu 12.04 installer: +#### Optional: -``` text -[ - "", - "/install/vmlinuz noapic ", - "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ", - "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ", - "hostname={{ .Name }} ", - "fb=false debconf/frontend=noninteractive ", - "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ", - "keyboard-configuration/variant=USA console-setup/ask_detect=false ", - "initrd=/install/initrd.gz -- " -] -``` +<%= partial "partials/common/bootcommand/VNCConfig-not-required" %> +<%= partial "partials/common/bootcommand/BootConfig-not-required" %> For more examples of various boot commands, see the sample projects from our [community templates page](/community-tools.html#templates). diff --git a/website/source/docs/builders/vmware-vmx.html.md.erb b/website/source/docs/builders/vmware-vmx.html.md.erb index b73d2a0e2..0ff219a87 100644 --- a/website/source/docs/builders/vmware-vmx.html.md.erb +++ b/website/source/docs/builders/vmware-vmx.html.md.erb @@ -54,220 +54,107 @@ In addition to the options listed here, a [communicator](/docs/templates/communicator.html) can be configured for this builder. + +## Configuration Reference + +There are many configuration options available for the builder. In addition to +the items listed here, you will want to look at the general configuration +references for +[HTTP](#http-directory-configuration), +[Floppy](#floppy-configuration), +[Boot](#boot-configuration), +[Driver](#driver-configuration), +[Output](#output-configuration), +[Run](#run-configuration), +[Shutdown](#shutdown-configuration), +[Communicator](#communicator-configuration), +[Tools](#tools-configuration), +[vmx](#vmx-configuration), +[Export](#export-configuration), +configuration references, which are +necessary for this build to succeed and can be found further down the page. + ### Required: -- `source_path` (string) - Path to the source VMX file to clone. If - `remote_type` is enabled then this specifies a path on the `remote_host`. +<%= partial "partials/builder/virtualbox/ovf/Config-required" %> -- `nopenopnopnopnponpo` (array of strings) - This is here so that the - previous item is correctly set. +#### Optional: -### Optional: +<%= partial "partials/builder/virtualbox/ovf/Config-not-required" %> +<%= partial "partials/builder/virtualbox/common/VBoxVersionConfig-not-required" %> +<%= partial "partials/builder/virtualbox/common/GuestAdditionsConfig-not-required" %> -- `boot_command` (array of strings) - This is an array of commands to type - when the virtual machine is first booted. The goal of these commands should - be to type just enough to initialize the operating system installer. Special - keys can be typed as well, and are covered in the section below on the - boot command. If this is not specified, it is assumed the installer will - start itself. +### Http directory configuration -- `boot_wait` (string) - The time to wait after booting the initial virtual - machine before typing the `boot_command`. The value of this should be - a duration. Examples are `5s` and `1m30s` which will cause Packer to wait - five seconds and one minute 30 seconds, respectively. If this isn't - specified, the default is `10s` or 10 seconds. +<%= partial "partials/common/HTTPConfig" %> +#### Optional: -- `disable_vnc` (boolean) - Whether to create a VNC connection or not. - A `boot_command` cannot be used when this is `false`. Defaults to `false`. +<%= partial "partials/common/HTTPConfig-not-required" %> -- `display_name` (string) - The name that will appear in your vSphere client, - and will be used for the vmx basename. This will override the "displayname" - value in your vmx file. It will also override the "displayname" if you have - set it in the "vmx_data" Packer option. This option is useful if you are - chaining vmx builds and want to make sure that the display name of each step - in the chain is unique: the vmware-vmx builder will use the displayname of - the VM being cloned from if it is not explicitly specified via the vmx_data - section or the displayname property. +### Floppy configuration -- `floppy_dirs` (array of strings) - A list of directories to place onto - the floppy disk recursively. This is similar to the `floppy_files` option - except that the directory structure is preserved. This is useful for when - your floppy disk includes drivers or if you just want to organize it's - contents as a hierarchy. Wildcard characters (\*, ?, and \[\]) are allowed. +<%= partial "partials/common/FloppyConfig" %> -- `floppy_files` (array of strings) - A list of files to place onto a floppy - disk that is attached when the VM is booted. This is most useful for - unattended Windows installs, which look for an `Autounattend.xml` file on - removable media. By default, no floppy will be attached. All files listed in - this setting get placed into the root directory of the floppy and the floppy - is attached as the first floppy device. Currently, no support exists for - creating sub-directories on the floppy. Wildcard characters (\*, ?, - and \[\]) are allowed. Directory names are also allowed, which will add all - the files found in the directory to the floppy. +#### Optional: -- `fusion_app_path` (string) - Path to "VMware Fusion.app". By default this is - `/Applications/VMware Fusion.app` but this setting allows you to - customize this. +<%= partial "partials/common/FloppyConfig-not-required" %> -- `headless` (boolean) - Packer defaults to building VMware virtual machines - by launching a GUI that shows the console of the machine being built. When - this value is set to `true`, the machine will start without a console. For - VMware machines, Packer will output VNC connection information in case you - need to connect to the console to debug the build process. +### Export configuration -- `http_directory` (string) - Path to a directory to serve using an - HTTP server. The files in this directory will be available over HTTP that - will be requestable from the virtual machine. This is useful for hosting - kickstart files and so on. By default this is an empty string, which means - no HTTP server will be started. The address and port of the HTTP server will - be available as variables in `boot_command`. This is covered in more detail - below. +#### Optional: -- `http_port_min` and `http_port_max` (number) - These are the minimum and - maximum port to use for the HTTP server started to serve the - `http_directory`. Because Packer often runs in parallel, Packer will choose - a randomly available port in this range to run the HTTP server. If you want - to force the HTTP server to be on one port, make this minimum and maximum - port the same. By default the values are `8000` and `9000`, respectively. +<%= partial "partials/builder/virtualbox/common/ExportConfig-not-required" %> -- `output_directory` (string) - This is the path to the directory where the - resulting virtual machine will be created. This may be relative or absolute. - If relative, the path is relative to the working directory when `packer` - is executed. This directory must not exist or be empty prior to running - the builder. By default this is `output-BUILDNAME` where "BUILDNAME" is the - name of the build. +### Output configuration -- `skip_validate_credentials` (boolean) - When Packer is preparing to run a - remote esxi build, and export is not disable, by default it runs a no-op - ovftool command to make sure that the remote_username and remote_password - given are valid. If you set this flag to `true`, Packer will skip this - validation. Default: `false`. +#### Optional: -- `remote_cache_datastore` (string) - The path to the datastore where - supporting files will be stored during the build on the remote machine. By - default this is the same as the `remote_datastore` option. This only has an - effect if `remote_type` is enabled. +<%= partial "partials/builder/virtualbox/common/OutputConfig-not-required" %> -- `remote_cache_directory` (string) - The path where the ISO and/or floppy - files will be stored during the build on the remote machine. The path is - relative to the `remote_cache_datastore` on the remote machine. By default - this is "packer\_cache". This only has an effect if `remote_type` - is enabled. +### Run configuration -- `remote_datastore` (string) - The path to the datastore where the resulting - VM will be stored when it is built on the remote machine. By default this - is "datastore1". This only has an effect if `remote_type` is enabled. +#### Optional: -- `remote_host` (string) - The host of the remote machine used for access. - This is only required if `remote_type` is enabled. +<%= partial "partials/builder/virtualbox/common/RunConfig-not-required" %> -- `remote_password` (string) - The SSH password for the user used to access - the remote machine. By default this is empty. This only has an effect if - `remote_type` is enabled. +### Driver configuration -- `remote_private_key_file` (string) - The path to the PEM encoded private key - file for the user used to access the remote machine. By default this is empty. - This only has an effect if `remote_type` is enabled. +#### Optional: -- `remote_type` (string) - The type of remote machine that will be used to - build this VM rather than a local desktop product. The only value accepted - for this currently is "esx5". If this is not set, a desktop product will - be used. By default, this is not set. +<%= partial "partials/builder/vmware/common/DriverConfig-not-required" %> -- `remote_username` (string) - The username for the SSH user that will access - the remote machine. This is required if `remote_type` is enabled. +### Tools configuration -- `shutdown_command` (string) - The command to use to gracefully shut down the - machine once all the provisioning is done. By default this is an empty - string, which tells Packer to just forcefully shut down the machine unless a - shutdown command takes place inside script so this may safely be omitted. If - one or more scripts require a reboot it is suggested to leave this blank - since reboots may fail and specify the final shutdown command in your - last script. +#### Optional: -- `shutdown_timeout` (string) - The amount of time to wait after executing the - `shutdown_command` for the virtual machine to actually shut down. If it - doesn't shut down in this time, it is an error. By default, the timeout is - `5m` or five minutes. +<%= partial "partials/builder/vmware/common/ToolsConfig-not-required" %> -- `linked` (boolean) - By default Packer creates a 'full' clone of - the virtual machine specified in `source_path`. The resultant virtual - machine is fully independant from the parent it was cloned from. +### VMX configuration - Setting `linked` to `true` instead causes Packer to create the virtual - machine as a 'linked' clone. Linked clones use and require ongoing - access to the disks of the parent virtual machine. The benefit of a - linked clone is that the clones virtual disk is typically very much - smaller than would be the case for a full clone. Additionally, the - cloned virtual machine can also be created much faster. Creating a - linked clone will typically only be of benefit in some advanced build - scenarios. Most users will wish to create a full clone instead. - Defaults to `false`. +#### Optional: -- `skip_compaction` (boolean) - VMware-created disks are defragmented and - compacted at the end of the build process using `vmware-vdiskmanager`. In - certain rare cases, this might actually end up making the resulting disks - slightly larger. If you find this to be the case, you can disable compaction - using this configuration value. Defaults to `false`. +<%= partial "partials/builder/vmware/common/VMXConfig-not-required" %> -- `skip_export` (boolean) - Defaults to `false`. When enabled, Packer will - not export the VM. Useful if the build output is not the resultant image, - but created inside the VM. +### Shutdown configuration -- `keep_registered` (boolean) - Set this to `true` if you would like to keep - the VM registered with the remote ESXi server. This is convenient if you - use packer to provision VMs on ESXi and don't want to use ovftool to - deploy the resulting artifact (VMX or OVA or whatever you used as `format`). - Defaults to `false`. +#### Optional: -- `ovftool_options` (array of strings) - Extra options to pass to ovftool - during export. Each item in the array is a new argument. The options - `--noSSLVerify`, `--skipManifestCheck`, and `--targetType` are reserved, - and should not be passed to this argument. +<%= partial "partials/builder/virtualbox/common/ShutdownConfig-not-required" %> -- `format` (string) - Either "ovf", "ova" or "vmx", this specifies the output - format of the exported virtual machine. This defaults to "ovf". - Before using this option, you need to install `ovftool`. +### Communicator configuration -- `tools_upload_flavor` (string) - The flavor of the VMware Tools ISO to - upload into the VM. Valid values are `darwin`, `linux`, and `windows`. By - default, this is empty, which means VMware tools won't be uploaded. +#### Optional common fields: -- `tools_upload_path` (string) - The path in the VM to upload the - VMware tools. This only takes effect if `tools_upload_flavor` is non-empty. - This is a [configuration - template](/docs/templates/engine.html) that has a single - valid variable: `Flavor`, which will be the value of `tools_upload_flavor`. - By default the upload path is set to `{{.Flavor}}.iso`. +<%= partial "partials/helper/communicator/Config-not-required" %> -- `vm_name` (string) - This is the name of the VMX file for the new virtual - machine, without the file extension. By default this is `packer-BUILDNAME`, - where "BUILDNAME" is the name of the build. +#### Optional SSH fields: -- `vmx_data` (object of key/value strings) - Arbitrary key/values to enter - into the virtual machine VMX file. This is for advanced users who want to - set properties such as memory, CPU, etc. +<%= partial "partials/helper/communicator/SSH-not-required" %> +<%= partial "partials/builder/virtualbox/common/SSHConfig-not-required" %> -- `vmx_data_post` (object of key/value strings) - Identical to `vmx_data`, - except that it is run after the virtual machine is shutdown, and before the - virtual machine is exported. +#### Optional WinRM fields: -- `vmx_remove_ethernet_interfaces` (boolean) - Remove all ethernet interfaces - from the VMX file after building. This is for advanced users who understand - the ramifications, but is useful for building Vagrant boxes since Vagrant - will create ethernet interfaces when provisioning a box. Defaults to - `false`. - -- `vnc_bind_address` (string / IP address) - The IP address that should be - binded to for VNC. By default packer will use `127.0.0.1` for this. If you - wish to bind to all interfaces use `0.0.0.0`. - -- `vnc_port_min` and `vnc_port_max` (number) - The minimum and maximum port - to use for VNC access to the virtual machine. The builder uses VNC to type - the initial `boot_command`. Because Packer generally runs in parallel, - Packer uses a randomly chosen port in this range that appears available. By - default this is `5900` to `6000`. The minimum and maximum ports are - inclusive. +<%= partial "partials/helper/communicator/WinRM-not-required" %> ## Boot Command diff --git a/website/source/partials/builder/vmware/common/_ExportConfig-not-required.html.md b/website/source/partials/builder/vmware/common/_ExportConfig-not-required.html.md index 80efaedec..0056fee8a 100644 --- a/website/source/partials/builder/vmware/common/_ExportConfig-not-required.html.md +++ b/website/source/partials/builder/vmware/common/_ExportConfig-not-required.html.md @@ -7,23 +7,21 @@ Since ovftool is only capable of password based authentication remote_password must be set when exporting the VM. -- `ovftool_options` ([]string) - Extra options to pass to ovftool - during export. Each item in the array is a new argument. The options - --noSSLVerify, --skipManifestCheck, and --targetType are reserved, - and should not be passed to this argument. - Currently, exporting the build VM (with ovftool) is only supported when - building on ESXi e.g. when remote_type is set to esx5. See the - Building on a Remote vSphere - Hypervisor +- `ovftool_options` ([]string) - Extra options to pass to ovftool during export. Each item in the array + is a new argument. The options `--noSSLVerify`, `--skipManifestCheck`, + and `--targetType` are reserved, and should not be passed to this + argument. Currently, exporting the build VM (with ovftool) is only + supported when building on ESXi e.g. when `remote_type` is set to + `esx5`. See the [Building on a Remote vSphere + Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) section below for more info. -- `skip_export` (bool) - Defaults to false. When enabled, Packer will - not export the VM. Useful if the build output is not the resultant - image, but created inside the VM. - Currently, exporting the build VM is only supported when building on - ESXi e.g. when remote_type is set to esx5. See the Building on a +- `skip_export` (bool) - Defaults to `false`. When enabled, Packer will not export the VM. Useful + if the build output is not the resultant image, but created inside the + VM. Currently, exporting the build VM is only supported when building on + ESXi e.g. when `remote_type` is set to `esx5`. See the [Building on a Remote vSphere - Hypervisor + Hypervisor](/docs/builders/vmware-iso.html#building-on-a-remote-vsphere-hypervisor) section below for more info. - `keep_registered` (bool) - Set this to true if you would like to keep diff --git a/website/source/partials/builder/vmware/common/_HWConfig-not-required.html.md b/website/source/partials/builder/vmware/common/_HWConfig-not-required.html.md index b61851fd3..08f2a0a39 100644 --- a/website/source/partials/builder/vmware/common/_HWConfig-not-required.html.md +++ b/website/source/partials/builder/vmware/common/_HWConfig-not-required.html.md @@ -13,11 +13,11 @@ such as hostonly, nat, or bridged. If the network is not one of these values, then it is assumed to be a VMware network device. (VMnet0..x) -- `network_adapter_type` (string) - This is the ethernet adapter type the the - virtual machine will be created with. By default the e1000 network adapter - type will be used by Packer. For more information, please consult the - - Choosing a network adapter for your virtual machine for desktop VMware +- `network_adapter_type` (string) - This is the ethernet adapter type the the virtual machine will be + created with. By default the `e1000` network adapter type will be used + by Packer. For more information, please consult [Choosing a network + adapter for your virtual + machine](https://kb.vmware.com/s/article/1001805) for desktop VMware clients. For ESXi, refer to the proper ESXi documentation. - `sound` (bool) - Specify whether to enable VMware's virtual soundcard @@ -29,10 +29,51 @@ the usb_xhci.present property. - `serial` (string) - This specifies a serial port to add to the VM. - It has a format of Type:option1,option2,.... The field Type can be one - of the following values: FILE, DEVICE, PIPE, AUTO, or NONE. + It has a format of `Type:option1,option2,...`. The field `Type` can be one + of the following values: `FILE`, `DEVICE`, `PIPE`, `AUTO`, or `NONE`. + + * `FILE:path(,yield)` - Specifies the path to the local file to be used as the + serial port. + * `yield` (bool) - This is an optional boolean that specifies whether + the vm should yield the cpu when polling the port. + By default, the builder will assume this as `FALSE`. + * `DEVICE:path(,yield)` - Specifies the path to the local device to be used + as the serial port. If `path` is empty, then + default to the first serial port. + * `yield` (bool) - This is an optional boolean that specifies whether + the vm should yield the cpu when polling the port. + By default, the builder will assume this as `FALSE`. + * `PIPE:path,endpoint,host(,yield)` - Specifies to use the named-pipe "path" + as a serial port. This has a few + options that determine how the VM + should use the named-pipe. + * `endpoint` (string) - Chooses the type of the VM-end, which can be + either a `client` or `server`. + * `host` (str`ing) - Chooses the type of the host-end, which can be either + an `app` (application) or `vm` (another virtual-machine). + * `yield` (bool) - This is an optional boolean that specifies whether + the vm should yield the cpu when polling the port. + By default, the builder will assume this as `FALSE`. + + * `AUTO:(yield)` - Specifies to use auto-detection to determine the serial + port to use. This has one option to determine how the VM + should support the serial port. + * `yield` (bool) - This is an optional boolean that specifies whether + the vm should yield the cpu when polling the port. + By default, the builder will assume this as `FALSE`. + * `NONE` - Specifies to not use a serial port. (default) - `parallel` (string) - This specifies a parallel port to add to the VM. It - has the format of Type:option1,option2,.... Type can be one of the - following values: FILE, DEVICE, AUTO, or NONE. + has the format of `Type:option1,option2,...`. Type can be one of the + following values: `FILE`, `DEVICE`, `AUTO`, or `NONE`. + + * `FILE:path` - Specifies the path to the local file to be used for the + parallel port. + * `DEVICE:path` - Specifies the path to the local device to be used for the + parallel port. + * `AUTO:direction` - Specifies to use auto-detection to determine the + parallel port. Direction can be `BI` to specify + bidirectional communication or `UNI` to specify + unidirectional communication. + * `NONE` - Specifies to not use a parallel port. (default) \ No newline at end of file diff --git a/website/source/partials/builder/vmware/common/_SSHConfig-not-required.html.md b/website/source/partials/builder/vmware/common/_SSHConfig-not-required.html.md new file mode 100644 index 000000000..a744bbde8 --- /dev/null +++ b/website/source/partials/builder/vmware/common/_SSHConfig-not-required.html.md @@ -0,0 +1,8 @@ + + +- `ssh_skip_request_pty` (bool) - These are deprecated, but we keep them around for BC + TODO(@mitchellh): remove + +- `ssh_wait_timeout` (time.Duration) - These are deprecated, but we keep them around for BC + TODO(@mitchellh): remove + \ No newline at end of file diff --git a/website/source/partials/builder/vmware/common/_ToolsConfig-not-required.html.md b/website/source/partials/builder/vmware/common/_ToolsConfig-not-required.html.md index aa47a1074..a464f5951 100644 --- a/website/source/partials/builder/vmware/common/_ToolsConfig-not-required.html.md +++ b/website/source/partials/builder/vmware/common/_ToolsConfig-not-required.html.md @@ -4,11 +4,10 @@ upload into the VM. Valid values are darwin, linux, and windows. By default, this is empty, which means VMware tools won't be uploaded. -- `tools_upload_path` (string) - The path in the VM to upload the - VMware tools. This only takes effect if tools_upload_flavor is non-empty. - This is a configuration - template that has a single - valid variable: Flavor, which will be the value of tools_upload_flavor. - By default the upload path is set to {{.Flavor}}.iso. This setting is not - used when remote_type is esx5. +- `tools_upload_path` (string) - The path in the VM to upload the VMware tools. This only takes effect if + `tools_upload_flavor` is non-empty. This is a [configuration + template](/docs/templates/engine.html) that has a single valid variable: + `Flavor`, which will be the value of `tools_upload_flavor`. By default + the upload path is set to `{{.Flavor}}.iso`. This setting is not used + when `remote_type` is `esx5`. \ No newline at end of file diff --git a/website/source/partials/builder/vmware/iso/_Config-not-required.html.md b/website/source/partials/builder/vmware/iso/_Config-not-required.html.md index b6ed80e34..8562b0a4b 100644 --- a/website/source/partials/builder/vmware/iso/_Config-not-required.html.md +++ b/website/source/partials/builder/vmware/iso/_Config-not-required.html.md @@ -6,15 +6,15 @@ fixed-size virtual hard disks, so the actual file representing the disk will not use the full size unless it is full. -- `disk_adapter_type` (string) - The adapter type of the VMware virtual disk - to create. This option is for advanced usage, modify only if you know what - you're doing. Some of the options you can specify are ide, sata, nvme - or scsi (which uses the "lsilogic" scsi interface by default). If you - specify another option, Packer will assume that you're specifying a scsi - interface of that specified type. For more information, please consult the - - Virtual Disk Manager User's Guide for desktop VMware clients. - For ESXi, refer to the proper ESXi documentation. +- `disk_adapter_type` (string) - The adapter type of the VMware virtual disk to create. This option is + for advanced usage, modify only if you know what you're doing. Some of + the options you can specify are `ide`, `sata`, `nvme` or `scsi` (which + uses the "lsilogic" scsi interface by default). If you specify another + option, Packer will assume that you're specifying a `scsi` interface of + that specified type. For more information, please consult [Virtual Disk + Manager User's Guide](http://www.vmware.com/pdf/VirtualDiskManager.pdf) + for desktop VMware clients. For ESXi, refer to the proper ESXi + documentation. - `vmdk_name` (string) - The filename of the virtual disk that'll be created, without the extension. This defaults to packer. @@ -27,6 +27,28 @@ - `disk_type_id` (string) - The type of VMware virtual disk to create. This option is for advanced usage. + For desktop VMware clients: + + Type ID | Description + ------- | --- + `0` | Growable virtual disk contained in a single file (monolithic sparse). + `1` | Growable virtual disk split into 2GB files (split sparse). + `2` | Preallocated virtual disk contained in a single file (monolithic flat). + `3` | Preallocated virtual disk split into 2GB files (split flat). + `4` | Preallocated virtual disk compatible with ESX server (VMFS flat). + `5` | Compressed disk optimized for streaming. + + The default is `1`. + + For ESXi, this defaults to `zeroedthick`. The available options for ESXi + are: `zeroedthick`, `eagerzeroedthick`, `thin`. `rdm:dev`, `rdmp:dev`, + `2gbsparse` are not supported. Due to default disk compaction, when using + `zeroedthick` or `eagerzeroedthick` set `skip_compaction` to `true`. + + For more information, please consult the [Virtual Disk Manager User's + Guide](https://www.vmware.com/pdf/VirtualDiskManager.pdf) for desktop + VMware clients. For ESXi, refer to the proper ESXi documentation. + - `format` (string) - Either "ovf", "ova" or "vmx", this specifies the output format of the exported virtual machine. This defaults to "ovf". Before using this option, you need to install ovftool. This option @@ -46,20 +68,19 @@ changes to better support the operating system running in the virtual machine. -- `version` (string) - The vmx hardware - version +- `version` (string) - The [vmx hardware + version](http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003746) for the new virtual machine. Only the default value has been tested, any - other value is experimental. Default value is 9. + other value is experimental. Default value is `9`. - `vm_name` (string) - This is the name of the VMX file for the new virtual machine, without the file extension. By default this is packer-BUILDNAME, where "BUILDNAME" is the name of the build. - `vmx_disk_template_path` (string) - VMX Disk Template Path -- `vmx_template_path` (string) - Path to a configuration - template that defines the - contents of the virtual machine VMX file for VMware. This is for advanced - users only as this can render the virtual machine non-functional. See - below for more information. For basic VMX modifications, try - vmx_data first. +- `vmx_template_path` (string) - Path to a [configuration template](/docs/templates/engine.html) that + defines the contents of the virtual machine VMX file for VMware. This is + for **advanced users only** as this can render the virtual machine + non-functional. See below for more information. For basic VMX + modifications, try `vmx_data` first. \ No newline at end of file