diff options
Diffstat (limited to 'common/kubernetes-cluster-cleanup.yml')
-rw-r--r-- | common/kubernetes-cluster-cleanup.yml | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/common/kubernetes-cluster-cleanup.yml b/common/kubernetes-cluster-cleanup.yml index 67f6151b..69a9fc7e 100644 --- a/common/kubernetes-cluster-cleanup.yml +++ b/common/kubernetes-cluster-cleanup.yml @@ -3,27 +3,22 @@ hosts: _kubernetes_primary_controlplane_node_ tasks: - name: fetch list of current nodes - command: kubectl get nodes -o name + command: kubectl --kubeconfig /etc/kubernetes/admin.conf get nodes -o jsonpath='{range .items[*]}{.metadata.name}{":"}{.metadata.labels.ansible\.spreadsapce\.org/inventory_hostname}{"\n"}{end}' changed_when: False check_mode: no - register: kubectl_node_list - - - name: generate list of nodes to be removed - set_fact: - kubernetes_nodes_to_delete: "{{ kubectl_node_list.stdout_lines | map('replace', 'node/', '') | list | difference(groups['_kubernetes_nodes_'] | map('extract', hostvars, 'kubernetes_node_name')) | list }}" + register: kubectl_node_list_yaml - name: generate group of nodes to be removed - loop: "{{ hostvars | dict2items | selectattr('value.kubernetes_node_name', 'defined') | selectattr('value.kubernetes_node_name', 'in', kubernetes_nodes_to_delete) | map(attribute='key') }}" + loop: "{{ kubectl_node_list_yaml.stdout_lines | map('split', ':', 1) | rejectattr('1', 'in', groups['_kubernetes_nodes_']) }}" + loop_control: + label: "{{ item[1] }} ({{ item[0] }})" add_host: - name: "{{ item }}" - inventory_dir: "{{ hostvars[item].inventory_dir }}" + name: "{{ item[1] }}" + inventory_dir: "{{ hostvars[item[1]].inventory_dir }}" group: _kubernetes_nodes_prune_ + kubernetes_node_name: "{{ item[0] }}" changed_when: False - - name: drain superflous nodes - loop: "{{ kubernetes_nodes_to_delete }}" - command: "kubectl drain {{ item }} --delete-local-data --force --ignore-daemonsets" - - name: prune superflous nodes from cluster hosts: _kubernetes_nodes_ roles: |