Add support for enabling the ARA callback plugin in install-ansible
This change enables the installation of the ARA callback plugin in the install-ansible role. It does not take care of any web reporting capabilities. ARA will not be installed and set up by default. It can be installed and configured by setting "install_ansible_enable_ara" to "true". Co-Authored-By: David Moreau-Simard <dmsimard@redhat.com> Co-Authored-By: Ian Wienand <iwienand@redhat.com> Change-Id: Iea84ec8e23ca2e3f021aafae4e89c764f2e05bd2
This commit is contained in:
parent
dd554dbd02
commit
35e87d6879
@ -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
|
||||
|
12
playbooks/roles/install-ansible/defaults/main.yaml
Normal file
12
playbooks/roles/install-ansible/defaults/main.yaml
Normal 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"
|
38
playbooks/roles/install-ansible/tasks/install_ara.yaml
Normal file
38
playbooks/roles/install-ansible/tasks/install_ara.yaml
Normal 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
|
@ -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.
|
||||
|
@ -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 %}
|
Loading…
Reference in New Issue
Block a user