From 3504694b4afb4792357c816631c6ddd6cfdde9e3 Mon Sep 17 00:00:00 2001 From: James Gibson Date: Wed, 20 Oct 2021 17:03:11 +0100 Subject: [PATCH] Fix error in dynamic-address-fact task When a dynamic_address_gather_filter is set and the inventory data does not generate the dynamic inventory variable container_networks[network_address]['bridge'], the task will fail, as even though dynamic_address_gather_filter is defined the jinja template will still try to evaluate container_networks[network_address]['bridge']. This patch fixes this by setting a default value if container_networks[network_address]['bridge'] is not defined Change-Id: I39082bee2435781d87f653e66fd55a92397c5572 --- playbooks/common-tasks/dynamic-address-fact.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/playbooks/common-tasks/dynamic-address-fact.yml b/playbooks/common-tasks/dynamic-address-fact.yml index 0a42190df2..c101e30f08 100644 --- a/playbooks/common-tasks/dynamic-address-fact.yml +++ b/playbooks/common-tasks/dynamic-address-fact.yml @@ -16,10 +16,12 @@ - name: Gathering facts for {{ network_address }} interface on metal hosts setup: gather_subset: "!all,network" - filter: "{{ dynamic_address_gather_filter | default(('ansible_' ~ container_networks[network_address]['bridge']) | replace('-','_')) }}" + filter: "{{ dynamic_address_gather_filter | default(('ansible_' ~ default_network_interface_name) | replace('-','_')) }}" + vars: + default_network_interface_name: "{{ container_networks[network_address]['bridge'] | default }}" when: - is_metal - - (dynamic_address_gather_filter is defined) or (container_networks[network_address] is defined and container_networks[network_address]['bridge'] is defined) + - (dynamic_address_gather_filter is defined) or (default_network_interface_name | length > 0) - name: Set IP to use for {{ network_address }} set_fact: "{{ network_address }}={{ hostvars[inventory_hostname] | json_query(query) }}"