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.
|
# 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) }}"
|
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.
|
# Path to Kolla-ansible configuration directory.
|
||||||
kolla_config_path: "{{ lookup('env', 'KOLLA_CONFIG_PATH') | default('/etc/kolla', true) }}"
|
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
|
# Limit the version of ansible used by kolla-ansible to avoid new releases from
|
||||||
# breaking tested code. Changes to this limit should be tested.
|
# breaking tested code. Changes to this limit should be tested.
|
||||||
ansible<2.6
|
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-defaults.yml
|
||||||
- include: test-extras.yml
|
- include: test-extras.yml
|
||||||
|
- include: test-requirements.yml
|
||||||
|
|
||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
connection: local
|
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.
|
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
|
Remote Execution Environment
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
@ -42,6 +42,9 @@
|
|||||||
# Path to virtualenv in which to install kolla-ansible.
|
# Path to virtualenv in which to install kolla-ansible.
|
||||||
#kolla_ansible_venv:
|
#kolla_ansible_venv:
|
||||||
|
|
||||||
|
# Extra requirements to install inside the kolla-ansible virtualenv.
|
||||||
|
#kolla_ansible_venv_extra_requirements:
|
||||||
|
|
||||||
# Path to Kolla-ansible configuration directory.
|
# Path to Kolla-ansible configuration directory.
|
||||||
#kolla_config_path:
|
#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