Restrict Ansible fact gathering to base subset

In Ansible 2.x the fact gathering process includes facts gathered
by facter [1] and ohai [2]if they are available. While this may be
useful in some environment, OpenStack-Ansible does not make use of
any of these facts in any of its playbooks/roles and the facts
gathered are therefore just an extra overhead.

This patch removes the facter and aohai gathering subsets. On a
test AIO this reduced the execution time for fact gathering to the
host and all running containers from 1m5s to 6s.

[1] https://docs.puppet.com/facter/
[2] https://docs.chef.io/ohai.html

This patch also re-implements the selective fact gathering in
run-playbooks that was implemented in
I348a4b7dfe70d56a64899246daf65ea834a75d2a but unintentionally
removed in 9be0662c4f

Change-Id: I9bfee53571f3dc3a0b0a0950242008e815722180
This commit is contained in:
Jesse Pretorius 2016-08-17 18:57:36 +01:00 committed by Jesse Pretorius (odyssey4me)
parent 1a797e42ec
commit 8d2caac546
3 changed files with 14 additions and 1 deletions

View File

@ -12,6 +12,7 @@ library = /etc/ansible/roles/plugins/library
# Fact caching
gathering = smart
gather_subset = !facter,!ohai
fact_caching = jsonfile
fact_caching_connection = /etc/openstack_deploy/ansible_facts
fact_caching_timeout = 86400

View File

@ -25,7 +25,7 @@
# repo_all[0] is built last to ensure it has all build artifacts for final indexing
- name: Build new repo packages for a given release
hosts: repo_all[1:],repo_all[0]
gather_facts: true
gather_facts: "{{ gather_facts | default(True) }}"
user: root
serial: 1
pre_tasks:

View File

@ -45,7 +45,19 @@ If you ever have any questions please join the community conversation on IRC at
}
function playbook_run {
# First we gather facts about the hosts to populate the fact cache.
# We can't gather the facts for all hosts yet because the containers
# aren't built yet.
ansible -m setup -a "gather_subset=!facter,!ohai" hosts
for root_include in $(awk -F'include:' '{print $2}' setup-everything.yml); do
# Once setup-hosts is complete, we should gather facts for everything
# (now including containers) so that the fact cache is complete for the
# remainder of the run.
if [[ "${root_include}" == "setup-infrastructure.yml" ]]; then
ansible -m setup -a "gather_subset=!facter,!ohai" all
fi
for include in $(awk -F'include:' '{print $2}' "${root_include}"); do
echo "[Executing \"${include}\" playbook]"
if [[ "${DEPLOY_AIO}" = true ]] && [[ "${include}" == "security-hardening.yml" ]]; then