vmware.vmware_rest.vcenter_vm_guest_customization module – Applies a customization specification on the virtual machine
Note
This module is part of the vmware.vmware_rest collection (version 3.2.0).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install vmware.vmware_rest
.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: vmware.vmware_rest.vcenter_vm_guest_customization
.
New in vmware.vmware_rest 0.1.0
Synopsis
Applies a customization specification on the virtual machine in {@param.name vm}. The actual customization happens inside the guest when the virtual machine is powered on. If there is a pending customization for the virtual machine and a new one is set, then the existing customization setting will be overwritten with the new settings.
Requirements
The below requirements are needed on the host that executes this module.
vSphere 7.0.3 or greater
python >= 3.6
aiohttp
Parameters
Parameter |
Comments |
---|---|
Settings to be applied to the guest during the customization. This parameter is mandatory. Valid attributes are:
If unset, ConfigurationSpec.linux-config or ConfigurationSpec.cloud-config must be set. Otherwise, an appropriate fault will be thrown. ([‘set’])
Accepted value for this field:
If unset, sysprep settings will not be applied to the windows guest operating system.
If unset, sysprep settings will not be applied to the windows guest operating system.
If unset, ConfigurationSpec.windows-config or ConfigurationSpec.cloud-config must be set. Otherwise, an appropriate fault will be thrown. ([‘set’])
See the https://kb.vmware.com/kb/2145518 for a list of supported time zones for different versions in Linux. If unset, time zone is not modified inside guest operating system.
The max size of the script is 1500 bytes. As long as the script (shell, perl, python…) has the right “#!” in the header, it is supported. The caller should not assume any environment variables when the script is run. The script is invoked by the customization engine using the command line: 1) with argument “precustomization” before customization, 2) with argument “postcustomization” after customization. The script should parse this argument and implement pre-customization or post-customization task code details in the corresponding block. A Linux shell script example: #!/bin/sh if [ x$1 == x”precustomization” ]; then echo “Do Precustomization tasks” #code for pre-customization actions… elif [ x$1 == x”postcustomization” ]; then echo “Do Postcustomization tasks” #code for post-customization actions… fi If unset, no script will be executed.
If unset, ConfigurationSpec.windows-config or ConfigurationSpec.linux-config must be set. Otherwise, an appropriate fault will be thrown. ([‘set’])
Accepted value for this field:
This field is optional and it is only relevant when the value of CloudConfiguration.type is CLOUDINIT. |
|
Global DNS settings constitute the DNS settings that are not specific to a particular virtual network adapter. This parameter is mandatory. Valid attributes are:
If unset, no DNS suffixes are set. ([‘set’])
If unset, no DNS servers are set. ([‘set’]) |
|
IP settings that are specific to a particular virtual network adapter. The AdapterMapping structure maps a network adapter’s MAC address to its IPSettings. May be empty if there are no network adapters, else should match number of network adapters configured for the VM. This parameter is mandatory. Valid attributes are:
If unset, the customization process maps the the settings from the list of i_p_settings in the CustomizationSpec.interfaces to the virtual machine’s network adapters, in PCI slot order. The first virtual network adapter on the PCI bus is assigned interfaces[0].IPSettings, the second adapter is assigned interfaces[1].IPSettings, and so on. ([‘set’])
This key is required with [‘set’].
If unset, no IPv4 addresses are set.
If unset, no IPv6 addresses are set.
If unset, no specific Windows settings are set. |
|
Timeout settings for client session. The maximal number of seconds for the whole operation including connection establishment, request sending and response. The default value is 300s. |
|
Choices:
|
|
The hostname or IP address of the vSphere vCenter If the value is not specified in the task, the value of environment variable |
|
The vSphere vCenter password If the value is not specified in the task, the value of environment variable |
|
You can use this optional parameter to set the location of a log file. This file will be used to record the HTTP REST interaction. The file will be stored on the host that run the module. If the value is not specified in the task, the value of environment variable |
|
The vSphere vCenter username If the value is not specified in the task, the value of environment variable |
|
Allows connection when SSL certificates are not valid. Set to If the value is not specified in the task, the value of environment variable Choices:
|
|
The unique identifier of the virtual machine that needs to be customized. The parameter must be the id of a resource returned by vmware.vmware_rest.vcenter_vm_info. This parameter is mandatory. |
Notes
Note
Tested on vSphere 7.0.3
Examples
- name: Customize the VM
vmware.vmware_rest.vcenter_vm_guest_customization:
vm: "{{ lookup('vmware.vmware_rest.vm_moid', '/my_dc/vm/test_vm1') }}"
configuration_spec:
linux_config:
domain: mydomain
hostname:
fixed_name: foobar
type: FIXED
interfaces:
- adapter:
ipv4:
type: STATIC
gateways:
- 192.168.123.1
ip_address: 192.168.123.50
prefix: 24
global_DNS_settings:
dns_suffix_list: []
dns_servers:
- 1.1.1.1
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
Customize the VM Returned: On success Sample: |