375 lines
7.6 KiB
Plaintext
Raw Normal View History

---
modeline: |
vim: set ft=pandoc:
description: |
2020-03-18 18:46:47 -04:00
This VMware Packer builder starts from an ISO and creates a vm using the
vSphere API to build on a remote VMWare machine.
layout: docs
2020-03-18 18:46:47 -04:00
page_title: VSphere ISO - Builders
sidebar_title: VSphere ISO
---
# Packer Builder for VMware vSphere
Type: `vsphere-iso`
This builder uses the vSphere API, and creates virtual machines remotely. It
starts from an ISO file and creates new VMs from scratch.
- VMware Player is not required.
2020-03-31 17:40:07 -04:00
- It uses the official vCenter API, and does not require ESXi host [modification](/docs/builders/vmware-iso#building-on-a-remote-vsphere-hypervisor)
- This builder is supported for vSphere version 6.5 and greater. Builds on lower
versions may work, but some configuration options may throw errors because they
do not exist in the older versions of the vSphere API.
## Examples
See complete Ubuntu, Windows, and macOS templates in the [examples folder](https://github.com/hashicorp/packer/tree/master/builder/vsphere/examples/).
# Configuration Reference
There are many configuration options available for this 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),
[Hardware](#hardware-configuration),
[Output](#output-configuration),
[Run](#run-configuration),
[Shutdown](#shutdown-configuration),
[Communicator](#communicator-configuration),
[Export](#export-configuration),
configuration references, which are
necessary for this build to succeed and can be found further down the page.
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/Config-not-required.mdx'
### Boot Configuration
@include 'common/bootcommand/BootConfig.mdx'
We send each character to the VM with a default delay of 100ms between groups.
The delay alleviates possible issues with latency and CPU
contention. If you notice missing keys, you can tune this delay by specifying
"boot_keygroup_interval" in your Packer template, for example:
<Tabs>
<Tab heading="JSON">
```json
{
"builders": [
{
"type": "vsphere-iso",
"boot_keygroup_interval": "500ms"
...
}
]
}
```
</Tab>
<Tab heading="HCL2">
```hcl
source "vsphere-iso" "example" {
boot_keygroup_interval = "500ms"
# ...
}
```
</Tab>
</Tabs>
#### Optional:
@include 'common/bootcommand/BootConfig-not-required.mdx'
@include 'builder/vsphere/common/BootConfig-not-required.mdx'
### Http directory configuration
@include 'common/HTTPConfig.mdx'
#### Optional:
@include 'common/HTTPConfig-not-required.mdx'
### Floppy configuration
@include 'builder/vsphere/iso/FloppyConfig-not-required.mdx'
### Connection Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/ConnectConfig-not-required.mdx'
### Hardware Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/HardwareConfig-not-required.mdx'
### Location Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/LocationConfig-not-required.mdx'
### Run Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/RunConfig-not-required.mdx'
### Shutdown Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/ShutdownConfig-not-required.mdx'
### Wait Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/WaitIpConfig-not-required.mdx'
### ISO Configuration
2020-03-23 20:02:12 -04:00
@include 'common/ISOConfig.mdx'
#### Required:
2020-03-23 20:02:12 -04:00
@include 'common/ISOConfig-required.mdx'
#### Optional:
2020-03-23 20:02:12 -04:00
@include 'common/ISOConfig-not-required.mdx'
### CDRom Configuration
Each iso defined in the CDRom Configuration adds a new drive. If the "iso_url" is defined in
addition to the "iso_paths", the "iso_url" is added to the VM first. This keeps the "iso_url" first in
the boot order by default allowing the boot iso being defined by the iso_url and the vmware tools iso added
from the datastore. Example:
<Tabs>
<Tab heading="JSON">
```json
"iso_urls": [
"win10.iso",
"http://example.org/isos/win10.iso"
],
"iso_paths": [
"[] /usr/lib/vmware/isoimages/windows.iso"
],
```
</Tab>
<Tab heading="HCL2">
```hcl
iso_urls = [
"win10.iso",
"http://example.org/isos/win10.iso"
]
iso_paths = [
"[] /usr/lib/vmware/isoimages/windows.iso"
]
```
</Tab>
</Tabs>
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/CDRomConfig-not-required.mdx'
### Create Configuration
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/CreateConfig-not-required.mdx'
### Network Adapter Configuration
2020-03-18 18:46:47 -04:00
@include 'builder/vsphere/iso/NIC.mdx'
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/NIC-required.mdx'
#### Optional
@include 'builder/vsphere/iso/NIC-not-required.mdx'
### Storage Configuration
2020-03-18 18:46:47 -04:00
@include 'builder/vsphere/iso/DiskConfig.mdx'
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/DiskConfig-required.mdx'
2020-03-24 19:48:37 -04:00
#### Optional
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/iso/DiskConfig-not-required.mdx'
### Export Configuration
2020-04-02 14:15:08 -04:00
@include 'builder/vsphere/common/ExportConfig.mdx'
#### Optional:
2020-04-02 14:15:08 -04:00
@include 'builder/vsphere/common/ExportConfig-not-required.mdx'
#### Output Configuration:
2020-04-02 14:15:08 -04:00
@include 'builder/vsphere/common/OutputConfig-not-required.mdx'
### Content Library Import Configuration
@include 'builder/vsphere/common/ContentLibraryDestinationConfig.mdx'
@include 'builder/vsphere/common/ContentLibraryDestinationConfig-not-required.mdx'
Minimal example of usage:
<Tabs>
<Tab heading="JSON">
```json
"content_library_destination" : {
"library": "Packer Library Test"
}
```
</Tab>
<Tab heading="HCL2">
```hcl
content_library_destination {
library = "Packer Library Test"
}
```
</Tab>
</Tabs>
### Extra Configuration Parameters
2020-03-18 18:46:47 -04:00
2020-03-23 20:02:12 -04:00
@include 'builder/vsphere/common/ConfigParamsConfig-not-required.mdx'
### Communicator configuration
#### Optional common fields:
2020-03-23 20:02:12 -04:00
@include 'helper/communicator/Config-not-required.mdx'
#### Optional SSH fields:
2020-03-23 20:02:12 -04:00
@include 'helper/communicator/SSH-not-required.mdx'
#### Optional WinRM fields:
2020-03-23 20:02:12 -04:00
@include 'helper/communicator/WinRM-not-required.mdx'
## Working with Clusters
2020-03-18 18:46:47 -04:00
#### Standalone Hosts
2020-03-18 18:46:47 -04:00
Only use the `host` option. Optionally specify a `resource_pool`:
2020-03-18 18:46:47 -04:00
<Tabs>
<Tab heading="JSON">
2020-03-31 18:47:06 -04:00
```json
"host": "esxi-1.vsphere65.test",
"resource_pool": "pool1",
```
</Tab>
<Tab heading="HCL2">
```hcl
host = ""esxi-1.vsphere65.test""
resource_pool = "pool1"
```
</Tab>
</Tabs>
#### Clusters Without DRS
2020-03-18 18:46:47 -04:00
Use the `cluster` and `host`parameters:
<Tabs>
<Tab heading="JSON">
2020-03-31 18:47:06 -04:00
```json
"cluster": "cluster1",
"host": "esxi-2.vsphere65.test",
```
</Tab>
<Tab heading="HCL2">
```hcl
cluster = "cluster1"
host = "esxi-2.vsphere65.test"
```
</Tab>
</Tabs>
#### Clusters With DRS
2020-03-18 18:46:47 -04:00
Only use the `cluster` option. Optionally specify a `resource_pool`:
2020-03-18 18:46:47 -04:00
<Tabs>
<Tab heading="JSON">
2020-03-31 18:47:06 -04:00
```json
"cluster": "cluster2",
"resource_pool": "pool1",
```
</Tab>
<Tab heading="HCL2">
```hcl
cluster = "cluster2"
resource_pool = "pool1"
```
</Tab>
</Tabs>
## Required vSphere Permissions
2020-03-18 18:46:47 -04:00
- VM folder (this object and children):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Virtual machine -> Inventory
Virtual machine -> Configuration
Virtual machine -> Interaction
Virtual machine -> Snapshot management
Virtual machine -> Provisioning
```
Individual privileges are listed in https://github.com/jetbrains-infra/packer-builder-vsphere/issues/97#issuecomment-436063235.
- Resource pool, host, or cluster (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Resource -> Assign virtual machine to resource pool
```
- Host in clusters without DRS (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Read-only
```
- Datastore (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Datastore -> Allocate space
Datastore -> Browse datastore
Datastore -> Low level file operations
```
- Network (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Network -> Assign network
```
- Distributed switch (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Read-only
```
For floppy image upload:
2020-03-18 18:46:47 -04:00
- Datacenter (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Datastore -> Low level file operations
```
- Host (this object):
2020-03-27 14:22:33 -04:00
```text
2020-03-18 18:46:47 -04:00
Host -> Configuration -> System Management
```