Merge "Add support for enabling the ARA callback plugin in install-ansible"

This commit is contained in:
Zuul 2018-12-12 23:19:00 +00:00 committed by Gerrit Code Review
commit 5be026ccc7
5 changed files with 101 additions and 4 deletions

View File

@ -37,3 +37,35 @@ Install and configure Ansible on a host via pip
:zuul:rolevar:`install-ansible.install_ansible_openstacksdk_name`. The
special value "latest" will ensure ``state: latest`` is set for the
package and thus the latest version is always installed.
.. zuul:rolevar:: install_ansible_ara_enable
:default: false
Whether or not to install the ARA Records Ansible callback plugin
.. zuul:rolevar:: install_ansible_ara_name
:default: ara
The name of the ARA package to install. To install from
alternative sources, this can be a URL for a remote package.
.. zuul:rolevar:: install_ansible_ara_version
:default: latest
Version of ARA to install. Set this to empty (YAML ``null``) if
specifying versions via URL in
:zuul:rolevar:`install-ansible.install_ansible_ara_name`. The
special value "latest" will ensure ``state: latest`` is set for the
package and hence the latest version is always installed.
.. zuul:rolevar:: install_ansible_ara_config
:default: {"database": "sqlite:////var/cache/ansible/ara.sqlite"}
A dictionary of key-value pairs to be added to the ARA
configuration file
*database*: Connection string for the database (ex: mysql+pymysql://ara:password@localhost/ara)
For a list of available configuration options, see the `ARA documentation`_
.. _ARA documentation: https://ara.readthedocs.io/en/stable/configuration.html

View File

@ -0,0 +1,12 @@
# Whether or not to install ARA
install_ansible_ara_enable: false
# See available configuration options in the ARA docs:
# https://ara.readthedocs.io/en/stable/configuration.html
# Note that this may be set in the private host vars when using mysql so we can
# keep the credentials secret.
install_ansible_ara_config:
# Connection string for ARA
# https://ara.readthedocs.io/en/stable/configuration.html#ara-database
# Ex: mysql+pymysql://ara:password@localhost/ara
database: "sqlite:////var/cache/ansible/ara.sqlite"

View File

@ -0,0 +1,38 @@
- name: Install pymysql for ara
pip:
name: pymysql
state: present
when: '"pymysql" in install_ansible_ara_config["database"]'
# If ansible_install_ansible_ara_version is not defined it should be "latest"
- name: Set ara default version to latest
set_fact:
install_ansible_ara_version: latest
when: install_ansible_ara_version is not defined
# If a version is not explicitly set we want to make sure to
# completely omit the version argument to pip, as it will be coming
# from the long-form install_ansible_ara_name variable. Additionally,
# if the version is the special value "latest", then we also want to
# omit any version number, but also set the package state to "latest".
- name: Set ARA version for installation
set_fact:
_install_ansible_ara_version: '{{ install_ansible_ara_version }}'
when: install_ansible_ara_version not in ('', 'latest')
- name: Set ARA package state for installation
set_fact:
_install_ansible_ara_state: latest
when: install_ansible_ara_version == 'latest'
- name: Install ARA
pip:
name: '{{ install_ansible_ara_name | default("ara") }}'
version: '{{ _install_ansible_ara_version | default(omit) }}'
state: '{{ _install_ansible_ara_state | default(omit) }}'
# For configuring the callback plugins location in ansible.cfg
- name: Get ARA's location for callback plugins
command: python3 -m ara.setup.callback_plugins
register: install_ansible_ara_callback_plugins
changed_when: false

View File

@ -74,9 +74,13 @@
group: root
mode: 0775
- name: Set up the ARA callback
include_tasks: install_ara.yaml
when: install_ansible_ara_enable
- name: Copy ansible.cfg in to place
copy:
src: ansible.cfg
template:
src: ansible.cfg.j2
dest: /etc/ansible/ansible.cfg
# NOTE(mordred) The copy of the openstack inventory plugin from 2.6 is busted.

View File

@ -2,8 +2,6 @@
inventory=/opt/system-config/inventory/openstack.yaml,/opt/system-config/inventory/groups.yaml,/etc/ansible/hosts/emergency.yaml
library=/usr/share/ansible
log_path=/var/log/ansible/ansible.log
callback_plugins=/etc/ansible/callback_plugins
callback_whitelist=profile_tasks, timer
inventory_plugins=/etc/ansible/inventory_plugins
roles_path=/opt/system-config/roles:/etc/ansible/roles
retry_files_enabled=False
@ -11,6 +9,12 @@ retry_files_save_path=
gathering=smart
fact_caching=jsonfile
fact_caching_connection=/var/cache/ansible/facts
callback_whitelist=profile_tasks, timer
{% if install_ansible_ara_enable %}
callback_plugins=/etc/ansible/callback_plugins:{{ install_ansible_ara_callback_plugins.stdout }}
{% else %}
callback_plugins=/etc/ansible/callback_plugins
{% endif %}
[inventory]
enable_plugins=yaml,yamlgroup,advanced_host_list,ini
@ -25,3 +29,10 @@ pipelining = True
[callback_profile_tasks]
task_output_limit = 50
{% if install_ansible_ara_enable %}
[ara]
{% for k, v in install_ansible_ara_config.items() %}
{{ k }}={{ v }}
{% endfor %}
{% endif %}