Merge "Make setup module arguments configurable"
This commit is contained in:
commit
a43b815b34
@ -5,8 +5,15 @@
|
||||
- name: Gather facts for all hosts
|
||||
hosts: all
|
||||
serial: '{{ kolla_serial|default("0") }}'
|
||||
gather_facts: true
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Gather facts
|
||||
setup:
|
||||
filter: "{{ kolla_ansible_setup_filter }}"
|
||||
gather_subset: "{{ kolla_ansible_setup_gather_subset }}"
|
||||
when:
|
||||
- not ansible_facts
|
||||
|
||||
- name: Group hosts to determine when using --limit
|
||||
group_by:
|
||||
key: "all_using_limit_{{ (ansible_play_batch | length) != (groups['all'] | length) }}"
|
||||
@ -32,10 +39,12 @@
|
||||
tasks:
|
||||
- name: Gather facts
|
||||
setup:
|
||||
filter: "{{ kolla_ansible_setup_filter }}"
|
||||
gather_subset: "{{ kolla_ansible_setup_gather_subset }}"
|
||||
delegate_facts: True
|
||||
delegate_to: "{{ item }}"
|
||||
with_items: "{{ delegate_hosts }}"
|
||||
# We gathered facts for all hosts in the batch during the first play.
|
||||
when:
|
||||
- not hostvars[item].ansible_facts.module_setup | default(false)
|
||||
- not hostvars[item].ansible_facts
|
||||
tags: always
|
||||
|
@ -20,6 +20,21 @@ node_config_directory: "/etc/kolla"
|
||||
config_owner_user: "root"
|
||||
config_owner_group: "root"
|
||||
|
||||
###################
|
||||
# Ansible options
|
||||
###################
|
||||
|
||||
# This variable is used as the "filter" argument for the setup module. For
|
||||
# instance, if one wants to remove/ignore all Neutron interface facts:
|
||||
# kolla_ansible_setup_filter: "ansible_[!qt]*"
|
||||
# By default, we do not provide a filter.
|
||||
kolla_ansible_setup_filter: "{{ omit }}"
|
||||
|
||||
# This variable is used as the "gather_subset" argument for the setup module.
|
||||
# For instance, if one wants to avoid collecting facts via facter:
|
||||
# kolla_ansible_setup_gather_subset: "all,!facter"
|
||||
# By default, we do not provide a gather subset.
|
||||
kolla_ansible_setup_gather_subset: "{{ omit }}"
|
||||
|
||||
###################
|
||||
# Kolla options
|
||||
|
@ -83,3 +83,40 @@ disable fact variable injection.
|
||||
|
||||
[defaults]
|
||||
inject_facts_as_vars = False
|
||||
|
||||
Fact filtering
|
||||
--------------
|
||||
|
||||
Ansible facts filtering can be used to speed up Ansible. Environments with
|
||||
many network interfaces on the network and compute nodes can experience very
|
||||
slow processing with Kolla Ansible. This happens due to the processing of the
|
||||
large per-interface facts with each task. To avoid storing certain facts, we
|
||||
can use the ``kolla_ansible_setup_filter`` variable, which is used as the
|
||||
``filter`` argument to the ``setup`` module. For example, to avoid collecting
|
||||
facts for virtual interfaces beginning with q or t:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
kolla_ansible_setup_filter: "ansible_[!qt]*"
|
||||
|
||||
This causes Ansible to collect but not store facts matching that pattern, which
|
||||
includes the virtual interface facts. Currently we are not referencing other
|
||||
facts matching the pattern within Kolla Ansible. Note that including the
|
||||
``ansible_`` prefix causes meta facts ``module_setup`` and ``gather_subset`` to
|
||||
be filtered, but this seems to be the only way to get a good match on the
|
||||
interface facts.
|
||||
|
||||
The exact improvement will vary, but has been reported to be as large as 18x on
|
||||
systems with many virtual interfaces.
|
||||
|
||||
Fact gathering subsets
|
||||
----------------------
|
||||
|
||||
It is also possible to configure which subsets of facts are gathered, via
|
||||
``kolla_ansible_setup_gather_subset``, which is used as the ``gather_subset``
|
||||
argument to the ``setup`` module. For example, if one wants to avoid collecting
|
||||
facts via facter:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
kolla_ansible_setup_gather_subset: "all,!facter"
|
||||
|
@ -5,6 +5,22 @@
|
||||
# commented parameters are shown here, To override the default value uncomment
|
||||
# the parameter and change its value.
|
||||
|
||||
###################
|
||||
# Ansible options
|
||||
###################
|
||||
|
||||
# This variable is used as the "filter" argument for the setup module. For
|
||||
# instance, if one wants to remove/ignore all Neutron interface facts:
|
||||
# kolla_ansible_setup_filter: "ansible_[!qt]*"
|
||||
# By default, we do not provide a filter.
|
||||
#kolla_ansible_setup_filter: "{{ omit }}"
|
||||
|
||||
# This variable is used as the "gather_subset" argument for the setup module.
|
||||
# For instance, if one wants to avoid collecting facts via facter:
|
||||
# kolla_ansible_setup_gather_subset: "all,!facter"
|
||||
# By default, we do not provide a gather subset.
|
||||
#kolla_ansible_setup_gather_subset: "{{ omit }}"
|
||||
|
||||
###############
|
||||
# Kolla options
|
||||
###############
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds support for configuring the ``filter`` and ``gather_subset`` arguments
|
||||
for the ``setup`` module via ``kolla_ansible_setup_filter`` and
|
||||
``kolla_ansible_setup_gather_subset`` respectively. These can be used to
|
||||
reduce the number of facts, which can have a significant effect on
|
||||
performance of Ansible.
|
Loading…
Reference in New Issue
Block a user