community.vmware.vsphere_copy module – Copy a file to a VMware datastore
Note
This module is part of the community.vmware collection (version 5.9.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 community.vmware.
To use it in a playbook, specify: community.vmware.vsphere_copy.
Synopsis
- Upload files to a VMware datastore through a vCenter REST API. 
Parameters
| Parameter | Comments | 
|---|---|
| The datacenter on the vCenter server that holds the datastore. | |
| The datastore to push files to. | |
| Optional argument - Set a diskformat for certain uploads like stream optimized VMDKs There is no official documentation, but it looks like  Setting this for non-VMDK files might lead to undefined behavior and is not supported. Choices: 
 | |
| 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  | |
| The password of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable  | |
| The file to push to the datastore. | |
| The port number of the vSphere vCenter or ESXi server. If the value is not specified in the task, the value of environment variable  Default:  | |
| Address of a proxy that will receive all HTTPS requests and relay them. The format is a hostname or a IP. If the value is not specified in the task, the value of environment variable  | |
| Port of the HTTP proxy that will receive all HTTPS requests and relay them. If the value is not specified in the task, the value of environment variable  | |
| The file to push to vCenter. | |
| The timeout in seconds for the upload to the datastore. Default:  | |
| The username of the vSphere vCenter or ESXi server. 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: 
 | 
Notes
Note
- This module ought to be run from a system that can access the vCenter or the ESXi directly and has the file to transfer. It can be the normal remote target or you can change it either by using - transport: localor using- delegate_to.
- All modules requires API write access and hence is not supported on a free ESXi license. 
- All variables and VMware object names are case sensitive. 
Examples
- name: Copy file to datastore using delegate_to
  community.vmware.vsphere_copy:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    src: /some/local/file
    datacenter: DC1 Someplace
    datastore: datastore1
    path: some/remote/file
  delegate_to: localhost
- name: Copy file to datastore when datacenter is inside folder called devel
  community.vmware.vsphere_copy:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    src: /some/local/file
    datacenter: devel/DC1
    datastore: datastore1
    path: some/remote/file
  delegate_to: localhost
- name: Copy file to datastore using other_system
  community.vmware.vsphere_copy:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    src: /other/local/file
    datacenter: DC2 Someplace
    datastore: datastore2
    path: other/remote/file
  delegate_to: other_system
- name: Copy file to datastore using other_system
  community.vmware.vsphere_copy:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    src: /other/local/streamOptimized.vmdk
    datacenter: DC2 Someplace
    datastore: datastore2
    path: disk_imports/streamOptimized.vmdk
    timeout: 360
    diskformat: StreamVmdk
  delegate_to: other_system
