Merge "Support reducing scope of delegated fact gathering"
This commit is contained in:
commit
1ce73700a7
ansible
doc/source/user
etc/kolla
releasenotes/notes
@ -44,7 +44,7 @@
|
|||||||
batch_size: "{{ ansible_play_batch | length }}"
|
batch_size: "{{ ansible_play_batch | length }}"
|
||||||
# Use a python list slice to divide the group up.
|
# Use a python list slice to divide the group up.
|
||||||
# Syntax: [<start index>:<end index>:<step size>]
|
# Syntax: [<start index>:<end index>:<step size>]
|
||||||
delegate_hosts: "{{ groups['all'][batch_index | int::batch_size | int] }}"
|
delegate_hosts: "{{ kolla_ansible_delegate_facts_hosts[batch_index | int::batch_size | int] }}"
|
||||||
tasks:
|
tasks:
|
||||||
- name: Gather facts
|
- name: Gather facts
|
||||||
setup:
|
setup:
|
||||||
|
@ -36,6 +36,12 @@ kolla_ansible_setup_filter: "{{ omit }}"
|
|||||||
# By default, we do not provide a gather subset.
|
# By default, we do not provide a gather subset.
|
||||||
kolla_ansible_setup_gather_subset: "{{ omit }}"
|
kolla_ansible_setup_gather_subset: "{{ omit }}"
|
||||||
|
|
||||||
|
# This variable determines which hosts require facts when using --limit. Facts
|
||||||
|
# will be gathered using delegation for hosts in this list that are not
|
||||||
|
# included in the limit.
|
||||||
|
# By default, this list includes all hosts.
|
||||||
|
kolla_ansible_delegate_facts_hosts: "{{ groups['all'] }}"
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Kolla options
|
# Kolla options
|
||||||
###################
|
###################
|
||||||
|
@ -160,3 +160,44 @@ A max fail percentage may be set for specific services using
|
|||||||
|
|
||||||
kolla_max_fail_percentage: 50
|
kolla_max_fail_percentage: 50
|
||||||
nova_max_fail_percentage: 25
|
nova_max_fail_percentage: 25
|
||||||
|
|
||||||
|
Delegated fact gathering
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
When Kolla Ansible is executed with a ``--limit`` argument, the scope of an
|
||||||
|
operation is limited to the hosts in the limit. For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
kolla-ansible deploy --limit control
|
||||||
|
|
||||||
|
Due to the nature of configuring clustered software services, there are cases
|
||||||
|
where we need to know information about other hosts. Most often this is related
|
||||||
|
to their hostname or network addresses. To make this work, Kolla Ansible
|
||||||
|
gathers facts for hosts outside of the limit using `delegated fact gathering
|
||||||
|
<https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_delegation.html#delegating-facts>`__.
|
||||||
|
|
||||||
|
By default, Kolla Ansible gathers facts for all hosts. Because delegated facts
|
||||||
|
are gathered serially in batches by the active hosts, this can take a long time
|
||||||
|
when there are not many hosts in the limit. If you know that facts are not
|
||||||
|
required for all hosts, it is possible to reduce the set of hosts eligible for
|
||||||
|
delegated fact gathering by setting ``kolla_ansible_delegate_facts_hosts`` to a
|
||||||
|
list of hosts. This may be done permanently in ``globals.yml`` or temporarily
|
||||||
|
for the duration of a command using the ``-e`` argument.
|
||||||
|
|
||||||
|
The exact requirements will depend upon configuration and inventory, but here
|
||||||
|
are some rules of thumb:
|
||||||
|
|
||||||
|
* Facts are typically required for all controllers, regardless of which hosts
|
||||||
|
are in the limit. This is due to references to RabbitMQ and Memcache
|
||||||
|
connection strings etc.
|
||||||
|
* Prometheus server requires facts for all other hosts to generate scrape
|
||||||
|
configs for node exporter, cAdvisor, etc. Specifically it uses the IP address
|
||||||
|
of the API interface. This may be avoided by hard-coding
|
||||||
|
``prometheus_target_address`` in the inventory for each host.
|
||||||
|
* Configuration of ``/etc/hosts`` during the ``bootstrap-servers`` command
|
||||||
|
requires facts for all other hosts. Specifically it uses the IP address of
|
||||||
|
the API interface, and the ``hostname`` and ``nodename`` facts.
|
||||||
|
* Noting the above exceptions, compute nodes are fairly independent. Other
|
||||||
|
hosts do not need to know their facts, and they do not need to know other
|
||||||
|
hosts' facts.
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
# commented parameters are shown here, To override the default value uncomment
|
# commented parameters are shown here, To override the default value uncomment
|
||||||
# the parameter and change its value.
|
# the parameter and change its value.
|
||||||
|
|
||||||
|
# Dummy variable to allow Ansible to accept this file.
|
||||||
|
workaround_ansible_issue_8743: yes
|
||||||
|
|
||||||
###################
|
###################
|
||||||
# Ansible options
|
# Ansible options
|
||||||
###################
|
###################
|
||||||
@ -21,15 +24,18 @@
|
|||||||
# By default, we do not provide a gather subset.
|
# By default, we do not provide a gather subset.
|
||||||
#kolla_ansible_setup_gather_subset: "{{ omit }}"
|
#kolla_ansible_setup_gather_subset: "{{ omit }}"
|
||||||
|
|
||||||
# Dummy variable to allow Ansible to accept this file.
|
|
||||||
workaround_ansible_issue_8743: yes
|
|
||||||
|
|
||||||
# This variable may be used to set the maximum failure percentage for all
|
# This variable may be used to set the maximum failure percentage for all
|
||||||
# plays. More fine-grained control is possible via per-service variables, e.g.
|
# plays. More fine-grained control is possible via per-service variables, e.g.
|
||||||
# nova_max_fail_percentage. The default behaviour is to set a max fail
|
# nova_max_fail_percentage. The default behaviour is to set a max fail
|
||||||
# percentage of 100, which is equivalent to not setting it.
|
# percentage of 100, which is equivalent to not setting it.
|
||||||
#kolla_max_fail_percentage:
|
#kolla_max_fail_percentage:
|
||||||
|
|
||||||
|
# This variable determines which hosts require facts when using --limit. Facts
|
||||||
|
# will be gathered using delegation for hosts in this list that are not
|
||||||
|
# included in the limit.
|
||||||
|
# By default, this list includes all hosts.
|
||||||
|
#kolla_ansible_delegate_facts_hosts: "{{ groups['all'] }}"
|
||||||
|
|
||||||
###############
|
###############
|
||||||
# Kolla options
|
# Kolla options
|
||||||
###############
|
###############
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds a new variable, ``kolla_ansible_delegate_facts_hosts``, that may be
|
||||||
|
used to control which hosts require facts when using ``--limit``. Its
|
||||||
|
default value is ``groups['all']``.
|
Loading…
x
Reference in New Issue
Block a user