vmware_guest - Manages virtual machines in vCenter
New in version 2.2.
Synopsis
- Create new virtual machines from templates or other virtual machines.
- Manage power state of virtual machine such as power on, power off, suspend, shutdown, reboot, restart etc.,.
- Modify, rename or remove a virtual machine.
Requirements
The below requirements are needed on the host that executes this module.
- python >= 2.6
- PyVmomi
Parameters
Parameter | Choices/Defaults | Comments |
---|---|---|
annotation
(added in 2.3)
|
A note or annotation to include in the virtual machine.
|
|
cdrom
(added in 2.5)
|
A CD-ROM configuration for the VM.
Valid attributes are:
-
type (string): The type of CD-ROM, valid options are
none ,
client or
iso . With
none the CD-ROM will be disconnected but present.
-
iso_path (string): The datastore path to the ISO file to use, in the form of
[datastore1] path/to/file.iso . Required if type is set
iso .
|
|
cluster
(added in 2.3)
|
The cluster name where the virtual machine will run.
This parameter is case sensitive.
|
|
customization
(added in 2.3)
|
Parameters for OS customization when cloning from template.
All parameters and VMware object names are case sensetive.
Common parameters (Linux/Windows):
-
dns_servers (list): List of DNS servers to configure.
-
dns_suffix (list): List of domain suffixes, aka DNS search path (default:
domain parameter).
-
domain (string): DNS domain name to use.
-
hostname (string): Computer hostname (default: shorted
name parameter).
Parameters related to Windows customization:
-
autologon (bool): Auto logon after VM customization (default: False).
-
autologoncount (int): Number of autologon after reboot (default: 1).
-
domainadmin (string): User used to join in AD domain (mandatory with
joindomain ).
-
domainadminpassword (string): Password used to join in AD domain (mandatory with
joindomain ).
-
fullname (string): Server owner name (default: Administrator).
-
joindomain (string): AD domain to join (Not compatible with
joinworkgroup ).
-
joinworkgroup (string): Workgroup to join (Not compatible with
joindomain , default: WORKGROUP).
-
orgname (string): Organisation name (default: ACME).
-
password (string): Local administrator password.
-
productid (string): Product ID.
-
runonce (list): List of commands to run at first user logon.
-
timezone (int): Timezone (See
https://msdn.microsoft.com/en-us/library/ms912391.aspx).
|
|
customvalues
(added in 2.3)
|
Define a list of custom values to set on virtual machine.
A custom value object takes two fields
key and
value .
Incorrect key and values will be ignored.
|
|
datacenter | Default:
ha-datacenter
|
Destination datacenter for the deploy operation.
This parameter is case sensitive.
|
disk |
A list of disks to add.
This parameter is case sensitive.
Resizing disks is not supported.
Removing existing disks of virtual machine is not supported.
Valid attributes are:
-
size_[tb,gb,mb,kb] (integer): Disk storage size in specified unit.
-
type (string): Valid values are:
-
thin thin disk
-
eagerzeroedthick eagerzeroedthick disk, added in version 2.5
Default:
None thick disk, no eagerzero.
-
datastore (string): Datastore to use for the disk. If
autoselect_datastore is enabled, filter datastore selection.
-
autoselect_datastore (bool): select the less used datastore. Specify only if
datastore is not specified.
|
|
esxi_hostname |
The ESXi hostname where the virtual machine will run.
This parameter is case sensitive.
|
|
folder |
Destination folder, absolute path to find an existing guest or create the new guest.
The folder should include the datacenter. ESX's datacenter is ha-datacenter.
This parameter is case sensitive.
Examples:
folder: /ha-datacenter/vm
folder: ha-datacenter/vm
folder: /datacenter1/vm
folder: datacenter1/vm
folder: /datacenter1/vm/folder1
folder: datacenter1/vm/folder1
folder: /folder1/datacenter1/vm
folder: folder1/datacenter1/vm
folder: /folder1/datacenter1/vm/folder2
|
|
force |
|
Ignore warnings and complete the actions.
This parameter is useful while removing virtual machine which is powered on state.
|
guest_id
(added in 2.3)
|
Set the guest ID.
This parameter is case sensitive.
Examples:
VM with RHEL7 64 bit, will be 'rhel7_64Guest'
VM with CensOS 64 bit, will be 'centos64Guest'
VM with Ubuntu 64 bit, will be 'ubuntu64Guest'
This field is required when creating a VM.
Valid values are referenced here:
https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html
|
|
hardware |
Manage virtual machine's hardware attributes.
All parameters case sensitive.
Valid attributes are:
-
hotadd_cpu (boolean): Allow virtual CPUs to be added while the VM is running.
-
hotremove_cpu (boolean): Allow virtual CPUs to be removed while the VM is running. version_added: 2.5
-
hotadd_memory (boolean): Allow memory to be added while the VM is running.
-
memory_mb (integer): Amount of memory in MB.
-
nested_virt (bool): Enable nested virtualization. version_added: 2.5
-
num_cpus (integer): Number of CPUs.
-
num_cpu_cores_per_socket (integer): Number of Cores Per Socket. Value should be multiple of
num_cpus .
-
scsi (string): Valid values are
buslogic ,
lsilogic ,
lsilogicsas and
paravirtual (default).
-
memory_reservation (integer): Amount of memory in MB to set resource limits for memory. version_added: 2.5
-
memory_reservation_lock (boolean): If set true, memory resource reservation for VM will always be equal to the VM's memory size. version_added: 2.5
-
max_connections (integer): Maximum number of active remote display connections for the virtual machines. version_added: 2.5.
-
mem_limit (integer): The memory utilization of a virtual machine will not exceed this limit. Unit is MB. version_added: 2.5
-
mem_reservation (integer): The amount of memory resource that is guaranteed available to the virtual machine. Unit is MB. version_added: 2.5
-
cpu_limit (integer): The CPU utilization of a virtual machine will not exceed this limit. Unit is MHz. version_added: 2.5
-
cpu_reservation (integer): The amount of CPU resource that is guaranteed available to the virtual machine. Unit is MHz. version_added: 2.5
|
|
hostname |
The hostname or IP address of the vSphere vCenter or ESXi server.
If the value is not specified in the task, the value of environment variable
VMWARE_HOST will be used instead.
Environment variable supported added in version 2.6.
|
|
is_template
(added in 2.3)
|
|
Flag the instance as a template.
This will mark VM instance as template.
|
linked_clone
(added in 2.4)
|
|
Whether to create a Linked Clone from the snapshot specified.
|
name
required
|
Name of the VM to work with.
VM names in vCenter are not necessarily unique, which may be problematic, see
name_match .
This parameter is case sensitive.
|
|
name_match |
|
If multiple VMs matching the name, use the first or last found.
|
networks
(added in 2.3)
|
A list of networks (in the order of the NICs).
All parameters and VMware object names are case sensetive.
One of the below parameters is required per entry:
-
name (string): Name of the portgroup for this interface.
-
vlan (integer): VLAN number for this interface.
Optional parameters per entry (used for virtual hardware):
-
device_type (string): Virtual network device (one of
e1000 ,
e1000e ,
pcnet32 ,
vmxnet2 ,
vmxnet3 (default),
sriov ).
-
mac (string): Customize mac address.
Optional parameters per entry (used for OS customization):
-
type (string): Type of IP assignment (either
dhcp or
static ).
dhcp is default.
-
ip (string): Static IP address (implies
type: static ).
-
netmask (string): Static netmask required for
ip .
-
gateway (string): Static gateway.
-
dns_servers (string): DNS servers for this network interface (Windows).
-
domain (string): Domain name for this network interface (Windows).
-
wake_on_lan (bool): Indicates if wake-on-LAN is enabled on this virtual network adapter. version_added: 2.5
-
start_connected (bool): Indicates that virtual network adapter starts with associated virtual machine powers on. version_added: 2.5
-
allow_guest_control (bool): Enables guest control over whether the connectable device is connected. version_added: 2.5
|
|
password |
The password of the vSphere vCenter or ESXi server.
If the value is not specified in the task, the value of environment variable
VMWARE_PASSWORD will be used instead.
Environment variable supported added in version 2.6.
aliases: pass, pwd |
|
port
(added in 2.5)
|
Default:
443
|
The port number of the vSphere vCenter or ESXi server.
If the value is not specified in the task, the value of environment variable
VMWARE_PORT will be used instead.
Environment variable supported added in version 2.6.
|
resource_pool
(added in 2.3)
|
Affect machine to the given resource pool.
This parameter is case sensitive.
Resource pool should be child of the selected host parent.
|
|
snapshot_src
(added in 2.4)
|
Name of the existing snapshot to use to create a clone of a VM.
This parameter is case sensitive.
|
|
state |
|
Specify state of the virtual machine be in.
If
state is set to
present and VM exists, ensure the VM configuration conforms to task arguments.
|
template |
Template or existing VM used to create VM.
If this value is not set, VM is created without using a template.
If the VM exists already this setting will be ignored.
This parameter is case sensitive.
aliases: template_src |
|
username |
The username of the vSphere vCenter or ESXi server.
If the value is not specified in the task, the value of environment variable
VMWARE_USER will be used instead.
Environment variable supported added in version 2.6.
aliases: user, admin |
|
uuid |
UUID of the instance to manage if known, this is VMware's unique identifier.
This is required if name is not supplied.
Please note that a supplied UUID will be ignored on VM creation, as VMware creates the UUID internally.
|
|
validate_certs |
True
|
Allows connection when SSL certificates are not valid. Set to
false when certificates are not trusted.
If the value is not specified in the task, the value of environment variable
VMWARE_VALIDATE_CERTS will be used instead.
Environment variable supported added in version 2.6.
|
wait_for_ip_address |
|
Wait until vCenter detects an IP address for the VM.
This requires vmware-tools (vmtoolsd) to properly work after creation.
vmware-tools needs to be installed on given virtual machine in order to work with this parameter.
|
Notes
Note
- Tested on vSphere 5.5, 6.0 and 6.5
Examples
- name: Create a VM from a template vmware_guest: hostname: 192.0.2.44 username: [email protected] password: vmware validate_certs: no folder: /testvms name: testvm_2 state: poweredon template: template_el7 disk: - size_gb: 10 type: thin datastore: g73_datastore hardware: memory_mb: 512 num_cpus: 6 num_cpu_cores_per_socket: 3 scsi: paravirtual memory_reservation: 512 memory_reservation_lock: True mem_limit: 8096 mem_reservation: 4096 cpu_limit: 8096 cpu_reservation: 4096 max_connections: 5 hotadd_cpu: True hotremove_cpu: True hotadd_memory: False cdrom: type: iso iso_path: "[datastore1] livecd.iso" networks: - name: VM Network mac: aa:bb:dd:aa:00:14 wait_for_ip_address: yes delegate_to: localhost register: deploy - name: Clone a VM from Template and customize vmware_guest: hostname: 192.168.1.209 username: [email protected] password: vmware validate_certs: no datacenter: datacenter1 cluster: cluster name: testvm-2 template: template_windows networks: - name: VM Network ip: 192.168.1.100 netmask: 255.255.255.0 gateway: 192.168.1.1 mac: aa:bb:dd:aa:00:14 domain: my_domain dns_servers: - 192.168.1.1 - 192.168.1.2 - vlan: 1234 type: dhcp customization: autologon: yes dns_servers: - 192.168.1.1 - 192.168.1.2 domain: my_domain password: new_vm_password runonce: - powershell.exe -ExecutionPolicy Unrestricted -File C:\Windows\Temp\ConfigureRemotingForAnsible.ps1 -ForceNewSSLCert -EnableCredSSP delegate_to: localhost - name: Create a VM template vmware_guest: hostname: 192.0.2.88 username: [email protected] password: vmware validate_certs: no datacenter: datacenter1 cluster: vmware_cluster_esx resource_pool: highperformance_pool folder: /testvms name: testvm_6 is_template: yes guest_id: debian6_64Guest disk: - size_gb: 10 type: thin datastore: g73_datastore hardware: memory_mb: 512 num_cpus: 1 scsi: lsilogic delegate_to: localhost register: deploy - name: Rename a VM (requires the VM's uuid) vmware_guest: hostname: 192.168.1.209 username: [email protected] password: vmware uuid: 421e4592-c069-924d-ce20-7e7533fab926 name: new_name state: present delegate_to: localhost - name: Remove a VM by uuid vmware_guest: hostname: 192.168.1.209 username: [email protected] password: vmware uuid: 421e4592-c069-924d-ce20-7e7533fab926 state: absent delegate_to: localhost
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description |
---|---|---|
instance
dict
|
always |
metadata about the new virtual machine
Sample:
None
|
Status
This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.
Author
- James Tanner (@jctanner) <tanner.jc@gmail.com>
- Loic Blot (@nerzhul) <loic.blot@unix-experience.fr>
- Philippe Dellaert (@pdellaert) <philippe@dellaert.org>
- Abhijeet Kasurde (@akasurde) <akasurde@redhat.com>
Hint
If you notice any issues in this documentation you can edit this document to improve it.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/vmware_guest_module.html