Merge "Add support for enabling the ARA callback plugin in install-ansible"
This commit is contained in:
commit
5be026ccc7
@ -37,3 +37,35 @@ Install and configure Ansible on a host via pip
|
|||||||
:zuul:rolevar:`install-ansible.install_ansible_openstacksdk_name`. The
|
:zuul:rolevar:`install-ansible.install_ansible_openstacksdk_name`. The
|
||||||
special value "latest" will ensure ``state: latest`` is set for the
|
special value "latest" will ensure ``state: latest`` is set for the
|
||||||
package and thus the latest version is always installed.
|
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
|
group: root
|
||||||
mode: 0775
|
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
|
- name: Copy ansible.cfg in to place
|
||||||
copy:
|
template:
|
||||||
src: ansible.cfg
|
src: ansible.cfg.j2
|
||||||
dest: /etc/ansible/ansible.cfg
|
dest: /etc/ansible/ansible.cfg
|
||||||
|
|
||||||
# NOTE(mordred) The copy of the openstack inventory plugin from 2.6 is busted.
|
# 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
|
inventory=/opt/system-config/inventory/openstack.yaml,/opt/system-config/inventory/groups.yaml,/etc/ansible/hosts/emergency.yaml
|
||||||
library=/usr/share/ansible
|
library=/usr/share/ansible
|
||||||
log_path=/var/log/ansible/ansible.log
|
log_path=/var/log/ansible/ansible.log
|
||||||
callback_plugins=/etc/ansible/callback_plugins
|
|
||||||
callback_whitelist=profile_tasks, timer
|
|
||||||
inventory_plugins=/etc/ansible/inventory_plugins
|
inventory_plugins=/etc/ansible/inventory_plugins
|
||||||
roles_path=/opt/system-config/roles:/etc/ansible/roles
|
roles_path=/opt/system-config/roles:/etc/ansible/roles
|
||||||
retry_files_enabled=False
|
retry_files_enabled=False
|
||||||
@ -11,6 +9,12 @@ retry_files_save_path=
|
|||||||
gathering=smart
|
gathering=smart
|
||||||
fact_caching=jsonfile
|
fact_caching=jsonfile
|
||||||
fact_caching_connection=/var/cache/ansible/facts
|
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]
|
[inventory]
|
||||||
enable_plugins=yaml,yamlgroup,advanced_host_list,ini
|
enable_plugins=yaml,yamlgroup,advanced_host_list,ini
|
||||||
@ -25,3 +29,10 @@ pipelining = True
|
|||||||
|
|
||||||
[callback_profile_tasks]
|
[callback_profile_tasks]
|
||||||
task_output_limit = 50
|
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