vmware_vm_shell - Run commands in a VMware guest operating system¶
New in version 2.1.
Synopsis¶
- Module allows user to run common system administration commands in the guest operating system.
Requirements¶
The below requirements are needed on the host that executes this module.
- python >= 2.6
- PyVmomi
Parameters¶
Parameter | Choices/Defaults | Comments |
---|---|---|
cluster |
The cluster hosting the virtual machine.
If set, it will help to speed up virtual machine search.
|
|
datacenter |
The datacenter hosting the virtual machine.
If set, it will help to speed up virtual machine search.
|
|
folder
(added in 2.4) |
Destination folder, absolute or relative path to find an existing guest or create the new guest.
The folder should include the datacenter. ESX's datacenter is ha-datacenter.
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
|
|
hostname
str |
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.
|
|
password
str |
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
int (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.
|
timeout
(added in 2.7) |
Default: 3600
|
Timeout in seconds.
If set to positive integers, then
wait_for_process will honor this parameter and will exit after this timeout. |
username
str |
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: admin, user |
|
validate_certs
bool |
|
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.
If set to
yes , please make sure Python >= 2.7.9 is installed on the given machine. |
vm_id
required |
Name of the virtual machine to work with.
|
|
vm_id_type |
|
The VMware identification method by which the virtual machine will be identified.
|
vm_password
required |
The password used to login-in to the virtual machine.
|
|
vm_shell
required |
The absolute path to the program to start.
On Linux, shell is executed via bash.
|
|
vm_shell_args |
Default: |
The argument to the program.
The characters which must be escaped to the shell also be escaped on the command line provided.
|
vm_shell_cwd |
The current working directory of the application from which it will be run.
|
|
vm_shell_env |
Comma separated list of environment variable, specified in the guest OS notation.
|
|
vm_username
required |
The user to login-in to the virtual machine.
|
|
wait_for_process
bool (added in 2.7) |
|
If set to
True , module will wait for process to complete in the given virtual machine. |
Notes¶
Note
- Tested on vSphere 5.5, 6.0 and 6.5.
- Only the first match against vm_id is used, even if there are multiple matches.
Examples¶
- name: Run command inside a virtual machine
vmware_vm_shell:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
datacenter: "{{ datacenter }}"
folder: /"{{datacenter}}"/vm
vm_id: "{{ vm_name }}"
vm_username: root
vm_password: superSecret
vm_shell: /bin/echo
vm_shell_args: " $var >> myFile "
vm_shell_env:
- "PATH=/bin"
- "VAR=test"
vm_shell_cwd: "/tmp"
delegate_to: localhost
register: shell_command_output
- name: Run command inside a virtual machine with wait and timeout
vmware_vm_shell:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
datacenter: "{{ datacenter }}"
folder: /"{{datacenter}}"/vm
vm_id: NameOfVM
vm_username: root
vm_password: superSecret
vm_shell: /bin/sleep
vm_shell_args: 100
wait_for_process: True
timeout: 2000
delegate_to: localhost
register: shell_command_with_wait_timeout
- name: Change user password in the guest machine
vmware_vm_shell:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
datacenter: "{{ datacenter }}"
folder: /"{{datacenter}}"/vm
vm_id: "{{ vm_name }}"
vm_username: sample
vm_password: old_password
vm_shell: "/bin/echo"
vm_shell_args: "-e 'old_password\nnew_password\nnew_password' | passwd sample > /tmp/$$.txt 2>&1"
delegate_to: localhost
- name: Change hostname of guest machine
vmware_vm_shell:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no
datacenter: "{{ datacenter }}"
folder: /"{{datacenter}}"/vm
vm_id: "{{ vm_name }}"
vm_username: testUser
vm_password: SuperSecretPassword
vm_shell: "/usr/bin/hostnamectl"
vm_shell_args: "set-hostname new_hostname > /tmp/$$.txt 2>&1"
delegate_to: localhost
Return Values¶
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description |
---|---|---|
results
dict
|
on success |
metadata about the new process after completion with wait_for_process
Sample:
{'cmd_line': '"/bin/sleep" 1', 'end_time': '2018-04-26T05:03:21+00:00', 'uuid': '564db1e2-a3ff-3b0e-8b77-49c25570bb66', 'owner': 'dev1', 'start_time': '2018-04-26T05:03:19+00:00', 'exit_code': 0, 'name': 'sleep'}
|
Status¶
This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.
Maintenance¶
This module is flagged as community which means that it is maintained by the Ansible Community. See Module Maintenance & Support for more info.
For a list of other modules that are also maintained by the Ansible Community, see here.
Author¶
- Ritesh Khadgaray (@ritzk)
- Abhijeet Kasurde (@Akasurde)
Hint
If you notice any issues in this documentation you can edit this document to improve it.