Allow installing extra packages inside the kolla-ansible virtualenv
It may be necessary to install extra Python packages inside the kolla-ansible virtualenv, such as when required by Ansible plugins. For example, using the hashi_vault lookup plugin requires the hvac Python package to be installed. This patch adds a kolla_ansible_venv_extra_requirements list variable which contains Python package requirements to add to the kolla-ansible requirements file. Its default value is an empty list. Change-Id: Ie0541dc05e2ab94af230d0113a23c544755424c7
This commit is contained in:
parent
228fe88cf7
commit
372058c19f
@ -40,6 +40,9 @@ kolla_ansible_source_version: "stable/queens"
|
||||
# Path to virtualenv in which to install kolla-ansible.
|
||||
kolla_ansible_venv: "{{ lookup('env', 'KOLLA_VENV_PATH') | default(lookup('env', 'PWD') ~ '/venvs/kolla-ansible', true) }}"
|
||||
|
||||
# Extra requirements to install inside the kolla-ansible virtualenv.
|
||||
kolla_ansible_venv_extra_requirements: []
|
||||
|
||||
# Path to Kolla-ansible configuration directory.
|
||||
kolla_config_path: "{{ lookup('env', 'KOLLA_CONFIG_PATH') | default('/etc/kolla', true) }}"
|
||||
|
||||
|
@ -8,3 +8,8 @@ kolla-ansible=={{ kolla_openstack_release }}
|
||||
# Limit the version of ansible used by kolla-ansible to avoid new releases from
|
||||
# breaking tested code. Changes to this limit should be tested.
|
||||
ansible<2.6
|
||||
{% if kolla_ansible_venv_extra_requirements is defined %}
|
||||
{% for item in kolla_ansible_venv_extra_requirements %}
|
||||
{{ item }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
- include: test-defaults.yml
|
||||
- include: test-extras.yml
|
||||
- include: test-requirements.yml
|
||||
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
|
59
ansible/roles/kolla-ansible/tests/test-requirements.yml
Normal file
59
ansible/roles/kolla-ansible/tests/test-requirements.yml
Normal file
@ -0,0 +1,59 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
tasks:
|
||||
- name: Create a temporary directory
|
||||
tempfile:
|
||||
state: directory
|
||||
register: tempfile_result
|
||||
|
||||
- block:
|
||||
- name: Test the kolla-ansible role with extra Python requirements
|
||||
include_role:
|
||||
name: ../../kolla-ansible
|
||||
vars:
|
||||
kolla_ansible_source_path: "{{ temp_path }}/src"
|
||||
kolla_ansible_ctl_install_type: "source"
|
||||
kolla_ansible_source_url: "http://github.com/openstack/kolla-ansible"
|
||||
kolla_ansible_source_version: "master"
|
||||
kolla_ansible_venv: "{{ temp_path }}/venv"
|
||||
kolla_ansible_venv_extra_requirements:
|
||||
- "hvac"
|
||||
kolla_config_path: "{{ temp_path }}/etc/kolla"
|
||||
kolla_node_custom_config_path: "{{ temp_path }}/etc/kolla/config"
|
||||
kolla_ansible_passwords_path: "{{ temp_path }}/passwords.yml"
|
||||
# Required config.
|
||||
kolla_base_distro: "fake-distro"
|
||||
kolla_install_type: "fake-install-type"
|
||||
kolla_docker_namespace: "fake-namespace"
|
||||
kolla_openstack_release: "fake-release"
|
||||
kolla_internal_vip_address: "10.0.0.1"
|
||||
kolla_internal_fqdn: "fake.internal.fqdn"
|
||||
kolla_external_vip_address: "10.0.0.2"
|
||||
kolla_external_fqdn: "fake.external.fqdn"
|
||||
kolla_enable_tls_external: False
|
||||
kolla_enable_grafana: False
|
||||
kolla_external_fqdn_cert: "fake-cert"
|
||||
kolla_openstack_logging_debug: False
|
||||
|
||||
- name: List Python packages installed in virtualenv
|
||||
command: "{{ temp_path }}/venv/bin/pip list"
|
||||
register: kolla_ansible_venv_pip_list
|
||||
changed_when: False
|
||||
|
||||
- name: Verify extra requirements are installed in virtualenv
|
||||
assert:
|
||||
that:
|
||||
- "'hvac' in kolla_ansible_venv_pip_list.stdout"
|
||||
|
||||
always:
|
||||
- name: Ensure the temporary directory is removed
|
||||
file:
|
||||
path: "{{ temp_path }}"
|
||||
state: absent
|
||||
rescue:
|
||||
- name: Flag that a failure occurred
|
||||
set_fact:
|
||||
test_failures: "{{ test_failures | default(0) | int + 1 }}"
|
||||
vars:
|
||||
temp_path: "{{ tempfile_result.path }}"
|
@ -27,6 +27,22 @@ kolla-ansible is installed and executed.
|
||||
the kolla-ansible virtualenv will be created.
|
||||
====================== ================================================== ============================
|
||||
|
||||
Extra Python packages can be installed inside the kolla-ansible virtualenv,
|
||||
such as when required by Ansible plugins, using the
|
||||
``kolla_ansible_venv_extra_requirements`` list variable in
|
||||
``$KAYOBE_CONFIG_PATH/kolla.yml``. For example, to use the `hashi_vault Ansible
|
||||
lookup plugin
|
||||
<https://docs.ansible.com/ansible/devel/plugins/lookup/hashi_vault.html>`_, its
|
||||
``hvac`` dependency can be installed using:
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: ``$KAYOBE_CONFIG_PATH/kolla.yml``
|
||||
|
||||
---
|
||||
# Extra requirements to install inside the kolla-ansible virtualenv.
|
||||
kolla_ansible_venv_extra_requirements:
|
||||
- "hvac"
|
||||
|
||||
Remote Execution Environment
|
||||
============================
|
||||
|
||||
|
@ -42,6 +42,9 @@
|
||||
# Path to virtualenv in which to install kolla-ansible.
|
||||
#kolla_ansible_venv:
|
||||
|
||||
# Extra requirements to install inside the kolla-ansible virtualenv.
|
||||
#kolla_ansible_venv_extra_requirements:
|
||||
|
||||
# Path to Kolla-ansible configuration directory.
|
||||
#kolla_config_path:
|
||||
|
||||
|
@ -0,0 +1,9 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds support for installing extra Python packages inside the kolla-ansible
|
||||
virtualenv, such as when required by Ansible plugins. A list of extra
|
||||
requirements can be configured via the
|
||||
``kolla_ansible_venv_extra_requirements`` variable in
|
||||
``$KAYOBE_CONFIG_PATH/kolla.yml``. No extra packages are installed by
|
||||
default.
|
Loading…
Reference in New Issue
Block a user