From 80b2765f201e948926fc6be500a652b7a2d276db Mon Sep 17 00:00:00 2001 From: Max Gautier <mg@max.gautier.name> Date: Thu, 3 Oct 2024 11:14:27 +0200 Subject: [PATCH] Fix dynamic groups definition when using --limit (#11577) Using the hosts directive at the play level prevent those tasks from being run when using --limit and the group in question is not part of the limit (ex: running scale.yml on new worker nodes only) Instead, run on all hosts, and for each group, partition between that group and '_' (generic group name which is not used; using an empty string as the group is not supported by ansible.builtin.group_by) Reported-by: asteppat <asteppat@cisco.com> --- playbooks/boilerplate.yml | 59 +++++++++++++-------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/playbooks/boilerplate.yml b/playbooks/boilerplate.yml index 66d50d634..f3198023f 100644 --- a/playbooks/boilerplate.yml +++ b/playbooks/boilerplate.yml @@ -6,50 +6,29 @@ # - to ensure we keep compatibility with old style group names # - to reduce inventory boilerplate (defining parent groups / empty groups) -- name: Add kube-master nodes to kube_control_plane - hosts: kube-master +- name: Define groups for legacy less structured inventories + hosts: all gather_facts: false tags: always tasks: - - name: Add nodes to kube_control_plane group + - name: Match needed groups by their old names or definition + vars: + group_mappings: + kube_control_plane: + - kube-master + kube_node: + - kube-node + calico_rr: + - calico-rr + no_floating: + - no-floating + k8s_cluster: + - kube_node + - kube_control_plane + - calico_rr group_by: - key: 'kube_control_plane' - -- name: Add kube-node nodes to kube_node - hosts: kube-node - gather_facts: false - tags: always - tasks: - - name: Add nodes to kube_node group - group_by: - key: 'kube_node' - -- name: Add calico-rr nodes to calico_rr - hosts: calico-rr - gather_facts: false - tags: always - tasks: - - name: Add nodes to calico_rr group - group_by: - key: 'calico_rr' - -- name: Define k8s_cluster group - hosts: kube_node:kube_control_plane:calico_rr - gather_facts: false - tags: always - tasks: - - name: Add nodes to k8s_cluster group - group_by: - key: 'k8s_cluster' - -- name: Add no-floating nodes to no_floating - hosts: no-floating - gather_facts: false - tags: always - tasks: - - name: Add nodes to no-floating group - group_by: - key: 'no_floating' + key: "{{ (group_names | intersect(item.value) | length > 0) | ternary(item.key, '_all') }}" + loop: "{{ group_mappings | dict2items }}" - name: Install bastion ssh config hosts: bastion[0] -- GitLab