91e17b23d4
Change-Id: I3bd50cb1e7db85acbf8ab20fc7bdd945b5232aaa
79 lines
2.5 KiB
ReStructuredText
79 lines
2.5 KiB
ReStructuredText
.. _virtual-environments:
|
|
|
|
====================
|
|
Virtual Environments
|
|
====================
|
|
|
|
Python `virtual environments <https://virtualenv.pypa.io/en/stable/>`_ provide
|
|
a mechanism for isolating python packages from the system site packages, and
|
|
other virtual environments. Kolla-ansible largely avoids this problem by
|
|
deploying services in Docker containers, however some python dependencies must
|
|
be installed both on the Ansible control host and the target hosts.
|
|
|
|
Ansible Control Host
|
|
====================
|
|
|
|
The kolla-ansible python package and its dependencies may be installed in a
|
|
python virtual environment on the Ansible control host. For example:
|
|
|
|
.. code-block:: console
|
|
|
|
virtualenv /path/to/venv
|
|
source /path/to/venv/bin/activate
|
|
pip install -U pip
|
|
pip install kolla-ansible
|
|
deactivate
|
|
|
|
It may be advantageous to also install Ansible in the virtual environment.
|
|
|
|
.. code-block:: console
|
|
|
|
source /path/to/venv/bin/activate
|
|
(venv) pip install ansible
|
|
(venv) deactivate
|
|
|
|
To use the virtual environment, it should first be activated:
|
|
|
|
.. code-block:: console
|
|
|
|
source /path/to/venv/bin/activate
|
|
(venv) kolla-ansible --help
|
|
|
|
The virtual environment can be deactivated when necessary:
|
|
|
|
.. code-block:: console
|
|
|
|
(venv) deactivate
|
|
|
|
Note that the use of a virtual environment on the Ansible control host does not
|
|
imply that a virtual environment will be used for execution of Ansible modules
|
|
on the target hosts.
|
|
|
|
.. _virtual-environments-target-hosts:
|
|
|
|
Target Hosts
|
|
============
|
|
|
|
Ansible supports remote execution of modules in a python virtual environment
|
|
via the ``ansible_python_interpreter`` variable. This may be configured to be
|
|
the path to a python interpreter installed in a virtual environment. For
|
|
example:
|
|
|
|
.. code-block:: yaml
|
|
|
|
ansible_python_interpreter: /path/to/venv/bin/python
|
|
|
|
Note that ``ansible_python_interpreter`` cannot be templated.
|
|
|
|
Kolla-ansible provides support for creating a python virtual environment on the
|
|
target hosts as part of the ``bootstrap-servers`` command. The path to the
|
|
virtualenv is configured via the ``virtualenv`` variable, and access to
|
|
site-packages is controlled via ``virtualenv_site_packages``. Typically we
|
|
will need to enable use of system site-packages from within this virtualenv, to
|
|
support the use of modules such as yum, apt, and selinux, which are not
|
|
available on PyPI.
|
|
|
|
When executing kolla-ansible commands other than ``bootstrap-servers``, the
|
|
variable ``ansible_python_interpreter`` should be set to the python interpreter
|
|
installed in ``virtualenv``.
|