Python virtual environments 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.
The kolla-ansible python package and its dependencies may be installed in a python virtual environment on the Ansible control host. For example:
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.
source /path/to/venv/bin/activate
(venv) pip install ansible
(venv) deactivate
To use the virtual environment, it should first be activated:
source /path/to/venv/bin/activate
(venv) kolla-ansible --help
The virtual environment can be deactivated when necessary:
(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.
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:
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
.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.