[CI] Fix testing inventory template due Ansible 2.16.14 breakage

Ansible 2.16.14 includes a fix for CVE-2024-11079 [1], which results
in the following error:

    jinja2.exceptions.UndefinedError:
        'ansible.vars.hostvars.HostVarsVars
         object' has no attribute 'ansible_host'

This issue occurs because Ansible now includes `localhost` in
`hostvars` without the `ansible_host` variable set, which
unexpectedly breaks our test inventory rendering.

This patch adds a filter to exclude `localhost`
during the rendering process, as it is irrelevant for our purposes.

[1] https://github.com/ansible/ansible/pull/84353

Change-Id: Ie7ae47e5a624da31cf6cc5cd3c9239450487b8ed
This commit is contained in:
Michal Arbet 2024-12-07 17:33:55 +01:00
parent ecdd7462aa
commit 0298699a4b

View File

@ -11,7 +11,7 @@
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
{% else %}
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
{% endif %}
@ -31,28 +31,28 @@ control
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
{% else %}
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
{% endif %}
[storage]
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
[monitoring]
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
[deployment]
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endfor %}
{% if scenario == 'cells' %}
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{% set cell_name = 'cell' ~ loop.index %}
[{{ cell_name }}]
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} mariadb_shard_id={{ loop.index0 % 2 }}
@ -123,7 +123,7 @@ storage
# In CI we want Pacemaker to run on primary and secondary (to test with HA).
[hacluster]
{% for host in hostvars %}
{% for host in hostvars | reject('equalto', 'localhost') %}
{% if host in ['primary', 'secondary'] %}
{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }}
{% endif %}