From b0fb06054e6a6b406e2836a919ce3d7b2ff1f5d2 Mon Sep 17 00:00:00 2001 From: Max Gautier Date: Fri, 4 Oct 2024 09:46:30 +0200 Subject: [PATCH] Assert correct limit usage This should prevent confusing errors with undefined variables --- .../preinstall/tasks/0040-verify-settings.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml b/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml index 867cfb2ed..e06b22417 100644 --- a/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml +++ b/roles/kubernetes/preinstall/tasks/0040-verify-settings.yml @@ -1,4 +1,19 @@ --- +- 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)) }}" + assert: + that: uncached_hosts | intersect(excluded_hosts) == 0 + 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'. + The following excluded hosts are not cached: {{ uncached_hosts | intersect(excluded_hosts) }} + run_once: true + when: + - ansible_limit is defined + - not ignore_assert_errors + - name: Stop if kube_control_plane group is empty assert: that: groups.get( 'kube_control_plane' )