Merge "Add support for enabling the ARA callback plugin in install-ansible"
This commit is contained in:
commit
5be026ccc7
playbooks/roles/install-ansible
@ -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…
x
Reference in New Issue
Block a user