# vmware_tools – Execute tasks inside a VM via VMware Tools

New in version 2.8.

- Synopsis
- Requirements
- Parameters
- Examples
- Status

## 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

- This connection is not guaranteed to have a backwards compatible interface. [preview]
- This connection is maintained by the Ansible Community. [community]

### Authors

- Deric Crago <deric.crago@gmail.com>

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.