mirror of https://github.com/ansible/ansible.git
VMware: scenario guide for vmware_tools connection plugin (#72080)
* VMware: scenario guide for vmware_tools connection plugin Scenario doc to guide user about the usage of vmware_tools using connection plugin. Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com> * review comments Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>pull/55921/head
parent
3c2e8b99be
commit
b6360dc5e0
@ -0,0 +1,120 @@
|
|||||||
|
.. _vmware_tools_connection:
|
||||||
|
|
||||||
|
************************************
|
||||||
|
Using vmware_tools connection plugin
|
||||||
|
************************************
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
This guide will show you how to utilize VMware Connection plugin to communicate and automate various tasks on VMware guest machines.
|
||||||
|
|
||||||
|
Scenario requirements
|
||||||
|
=====================
|
||||||
|
|
||||||
|
* Software
|
||||||
|
|
||||||
|
* Ansible 2.9 or later must be installed.
|
||||||
|
|
||||||
|
* We recommend installing the latest version with pip: ``pip install Pyvmomi`` on the Ansible control node
|
||||||
|
(as the OS packages are usually out of date and incompatible) if you are planning to use any existing VMware modules.
|
||||||
|
|
||||||
|
* Hardware
|
||||||
|
|
||||||
|
* vCenter Server 6.5 and above
|
||||||
|
|
||||||
|
* Access / Credentials
|
||||||
|
|
||||||
|
* Ansible (or the target server) must have network access to either the vCenter server
|
||||||
|
|
||||||
|
* Username and Password for vCenter with required permissions
|
||||||
|
|
||||||
|
* VMware tools or openvm-tools with required dependencies like Perl installed on the given virtual machine
|
||||||
|
|
||||||
|
Caveats
|
||||||
|
=======
|
||||||
|
|
||||||
|
- All variable names and VMware object names are case sensitive.
|
||||||
|
- You need to use Python 2.7.9 version in order to use ``validate_certs`` option, as this version is capable of changing the SSL verification behaviors.
|
||||||
|
|
||||||
|
|
||||||
|
Example description
|
||||||
|
===================
|
||||||
|
|
||||||
|
User can run playbooks against VMware virtual machines using ``vmware_tools`` connection plugin.
|
||||||
|
|
||||||
|
In order work with ``vmware_tools`` connection plugin, you will need to specify hostvars for the given virtual machine.
|
||||||
|
|
||||||
|
For example, if you want to run a playbook on a virtual machine called ``centos_7`` located at ``/Asia-Datacenter1/prod/centos_7`` in the given vCenter, you will need to specify hostvars as follows:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[centos7]
|
||||||
|
host1
|
||||||
|
|
||||||
|
[centos7:vars]
|
||||||
|
# vmware_tools related variables
|
||||||
|
ansible_connection=vmware_tools
|
||||||
|
ansible_vmware_host=10.65.201.128
|
||||||
|
ansible_vmware_user=administrator@vsphere.local
|
||||||
|
ansible_vmware_password=Esxi@123$%
|
||||||
|
ansible_vmware_validate_certs=no
|
||||||
|
|
||||||
|
# Location of the virtual machine
|
||||||
|
ansible_vmware_guest_path=Asia-Datacenter1/vm/prod/centos_7
|
||||||
|
|
||||||
|
# Credentials
|
||||||
|
ansible_vmware_tools_user=root
|
||||||
|
ansible_vmware_tools_password=Secret123
|
||||||
|
|
||||||
|
Here, we are providing vCenter details and credentials for the given virtual machine to run the playbook on.
|
||||||
|
If your virtual machine path is ``Asia-Datacenter1/prod/centos_7``, you specify ``ansible_vmware_guest_path`` as ``Asia-Datacenter1/vm/prod/centos_7``. Please take a note that ``/vm`` is added in the virtual machine path, since this is a logical folder structure in the VMware inventory.
|
||||||
|
|
||||||
|
Let us now run following playbook,
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
---
|
||||||
|
- name: Example showing VMware Connection plugin
|
||||||
|
hosts: centos7
|
||||||
|
tasks:
|
||||||
|
- name: Gather information about temporary directory inside VM
|
||||||
|
shell: ls /tmp
|
||||||
|
|
||||||
|
|
||||||
|
Since Ansible utilizes the ``vmware-tools`` or ``openvm-tools`` service capabilities running in the virtual machine to perform actions, in this use case it will be connecting directly to the guest machine.
|
||||||
|
|
||||||
|
|
||||||
|
For now, you will be entering credentials in plain text, but in a more advanced playbook this can be abstracted out and stored in a more secure fashion using :ref:`ansible-vault` or using `Ansible Tower credentials <https://docs.ansible.com/ansible-tower/latest/html/userguide/credentials.html>`_.
|
||||||
|
|
||||||
|
|
||||||
|
What to expect
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Running this playbook can take some time, depending on your environment and network connectivity. When the run is complete you will see:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
{
|
||||||
|
"changed": true,
|
||||||
|
"cmd": "ls /tmp",
|
||||||
|
"delta": "0:00:00.005440",
|
||||||
|
"end": "2020-10-01 07:30:56.940813",
|
||||||
|
"rc": 0,
|
||||||
|
"start": "2020-10-01 07:30:56.935373",
|
||||||
|
"stderr": "",
|
||||||
|
"stderr_lines": [],
|
||||||
|
"stdout": "ansible_command_payload_JzWiL9\niso",
|
||||||
|
"stdout_lines": ["ansible_command_payload_JzWiL9", "iso", "vmware-root"]
|
||||||
|
}
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
---------------
|
||||||
|
|
||||||
|
If your playbook fails:
|
||||||
|
|
||||||
|
- Check if the values provided for username and password are correct.
|
||||||
|
- Check if the path of virtual machine is correct. Please mind that ``/vm/`` needs to be provided while specifying virtual machine location.
|
Loading…
Reference in New Issue