-
- Downloads
Performance: avoid set_fact in Kolla Ansible host vars
When generating host variable files for Kolla Ansible, we have some heavy usage of set_fact to set variables for network interfaces, in a play targeted at all hosts. There are also tasks using the fail action plugin to perform verification. At scale this has a significant impact, due to the number of tasks executed against all hosts. These tasks are executed at the beginning of many commands, so the scope is broad. There is also some tricky logic involved, which is difficult to express in Ansible/Jinja. This change replaces the use of set_fact with a custom Ansible action plugin. The plugin executes locally on the Ansible controller, and returns a dict of Ansible facts to set for each host. The plugin is executed once for each overcloud host, and returns all relevant facts. The plugin also performs verification. Extraction into a Python module allows for unit testing. This has been shown to have a significant improvement on execution time, particularly as the number of hosts reaches 100 or more. Story: 2007993 Task: 40641 Change-Id: I443da1ae05fcca2d7d8dff7db563eeda37e9f502
Showing
- ansible/action_plugins/kolla_ansible_host_vars.py 19 additions, 0 deletionsansible/action_plugins/kolla_ansible_host_vars.py
- ansible/kolla-ansible.yml 81 additions, 171 deletionsansible/kolla-ansible.yml
- kayobe/plugins/__init__.py 0 additions, 0 deletionskayobe/plugins/__init__.py
- kayobe/plugins/action/__init__.py 0 additions, 0 deletionskayobe/plugins/action/__init__.py
- kayobe/plugins/action/kolla_ansible_host_vars.py 161 additions, 0 deletionskayobe/plugins/action/kolla_ansible_host_vars.py
- kayobe/tests/unit/plugins/__init__.py 0 additions, 0 deletionskayobe/tests/unit/plugins/__init__.py
- kayobe/tests/unit/plugins/action/__init__.py 0 additions, 0 deletionskayobe/tests/unit/plugins/action/__init__.py
- kayobe/tests/unit/plugins/action/test_kolla_ansible_host_vars.py 450 additions, 0 deletions...tests/unit/plugins/action/test_kolla_ansible_host_vars.py
kayobe/plugins/__init__.py
0 → 100644
kayobe/plugins/action/__init__.py
0 → 100644
kayobe/tests/unit/plugins/__init__.py
0 → 100644
kayobe/tests/unit/plugins/action/__init__.py
0 → 100644
Please register or sign in to comment