From bf6687b0320f1ae977f4937e66bc187b60d556a0 Mon Sep 17 00:00:00 2001 From: Max Gautier Date: Thu, 7 Nov 2024 11:27:33 +0100 Subject: [PATCH] preinstall: fix checking that excluded host are cached (#11693) - Lookup was not returning a list, making the difference filter spit out garbage -> query always return a list - hostvars is a dictionnary, so convert to list before selectattr and map back to only get keys --- roles/kubernetes/preinstall/tasks/0040-verify-settings.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml b/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml index 3ae1c4539..e911c76cc 100644 --- a/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml +++ b/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml @@ -1,10 +1,10 @@ --- - name: Stop if any host not in '--limit' does not have a fact cache vars: - uncached_hosts: "{{ (hostvars | selectattr('ansible_default_ipv4', 'undefined')).keys() }}" - excluded_hosts: "{{ hostvars.keys() | difference(lookup('inventory_hostnames', ansible_limit)) }}" + uncached_hosts: "{{ hostvars | dict2items | selectattr('value.ansible_default_ipv4', 'undefined') | map(attribute='key') }}" + excluded_hosts: "{{ hostvars.keys() | difference(query('inventory_hostnames', ansible_limit)) }}" assert: - that: uncached_hosts | intersect(excluded_hosts) == 0 + that: uncached_hosts | intersect(excluded_hosts) == [] fail_msg: | Kubespray does not support '--limit' without a populated facts cache for the excluded hosts. Please run the facts.yml playbook first without '--limit'.