vmware_tools – Execute tasks inside a VM via VMware Tools

New in version 2.8.

Synopsis

  • Use VMware tools to run tasks in, or put/fetch files to guest operating systems running in VMware infrastructure.
  • In case of Windows VMs, set ansible_shell_type to powershell.
  • Does not work with ‘become’.

Requirements

The below requirements are needed on the local master node that executes this connection.

  • pyvmomi (Python library)
  • requests (Python library)

Parameters

Parameter Choices/Defaults Configuration Comments
exec_command_sleep_interval
float
Default:
0.5
var: ansible_vmware_tools_exec_command_sleep_interval
Time in seconds to sleep between execution of command.
executable
-
Default:
"/bin/sh"
ini entries:

[defaults]
executable = /bin/sh

env:ANSIBLE_EXECUTABLE
var: ansible_executable
var: ansible_vmware_tools_executable
shell to use for execution inside container
file_chunk_size
integer
Default:
128
var: ansible_vmware_tools_file_chunk_size
File chunk size.
(Applicable when writing a file to disk, example: using the fetch module.)
validate_certs
boolean
    Choices:
  • no
  • yes ←
env:VMWARE_VALIDATE_CERTS
var: ansible_vmware_validate_certs
Verify SSL for the connection.
Note: This will validate certs for both vmware_host and the ESXi host running the VM.
vm_password
- / required
var: ansible_password
var: ansible_vmware_tools_password
Password for the user in guest operating system.
vm_path
- / required
var: ansible_vmware_guest_path
VM path absolute to the connection.
vCenter Example: Datacenter/vm/Discovered virtual machine/testVM.
ESXi Host Example: ha-datacenter/vm/testVM.
Must include VM name, appended to 'folder' as would be passed to vmware_guest.
Needs to include vm between the Datacenter and the rest of the VM path.
Datacenter default value for ESXi server is ha-datacenter.
Folder vm is not visible in the vSphere Web Client but necessary for VMware API to work.
vm_user
- / required
var: ansible_user
var: ansible_vmware_tools_user
VM username.
vmware_host
- / required
env:VI_SERVER
env:VMWARE_HOST
var: ansible_host
var: ansible_vmware_host
FQDN or IP Address for the connection (vCenter or ESXi Host).
vmware_password
- / required
env:VI_PASSWORD
env:VMWARE_PASSWORD
var: ansible_vmware_password
Password for the connection.
vmware_port
-
Default:
443
env:VI_PORTNUMBER
env:VMWARE_PORT
var: ansible_port
var: ansible_vmware_port
Port for the connection.
vmware_user
- / required
env:VI_USERNAME
env:VMWARE_USER
var: ansible_vmware_user
Username for the connection.
Requires the following permissions on the VM: - VirtualMachine.GuestOperations.Execute - VirtualMachine.GuestOperations.Modify - VirtualMachine.GuestOperations.Query

Examples

# example vars.yml
---
ansible_connection: vmware_tools

ansible_vmware_host: vcenter.example.com
ansible_vmware_user: administrator@vsphere.local
ansible_vmware_password: Secr3tP4ssw0rd!12
ansible_vmware_validate_certs: no  # default is yes

# vCenter Connection VM Path Example
ansible_vmware_guest_path: DATACENTER/vm/FOLDER/{{ inventory_hostname }}
# ESXi Connection VM Path Example
ansible_vmware_guest_path: ha-datacenter/vm/{{ inventory_hostname }}

ansible_vmware_tools_user: root
ansible_vmware_tools_password: MyR00tPassw0rD

# if the target VM guest is Windows set the 'ansible_shell_type' to 'powershell'
ansible_shell_type: powershell


# example playbook_linux.yml
---
- name: Test VMware Tools Connection Plugin for Linux
  hosts: linux
  tasks:
    - command: whoami

    - ping:

    - copy:
        src: foo
        dest: /home/user/foo

    - fetch:
        src: /home/user/foo
        dest: linux-foo
        flat: yes

    - file:
        path: /home/user/foo
        state: absent


# example playbook_windows.yml
---
- name: Test VMware Tools Connection Plugin for Windows
  hosts: windows
  tasks:
    - win_command: whoami

    - win_ping:

    - win_copy:
        src: foo
        dest: C:\Users\user\foo

    - fetch:
        src: C:\Users\user\foo
        dest: windows-foo
        flat: yes

    - win_file:
        path: C:\Users\user\foo
        state: absent

Status

Authors

Hint

If you notice any issues in this documentation, you can edit this document to improve it.

Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.