remove-etcd-node: refactor shell to ansible filters

Remove unnecessary error handling. If the node ip is not defined, is
does not change anything whether we fail early of late.
This commit is contained in:
Max Gautier
2024-09-05 05:31:46 +02:00
parent ebdc599b05
commit 2a52e5f08c

View File

@@ -2,39 +2,16 @@
- name: Lookup node IP in kubernetes - name: Lookup node IP in kubernetes
command: > command: >
{{ kubectl }} get nodes {{ node }} {{ kubectl }} get nodes {{ node }}
-o jsonpath='{range .status.addresses[?(@.type=="InternalIP")]}{@.address}{"\n"}{end}' -o jsonpath-as-json='{.status.addresses[?(@.type=="InternalIP")].address}'
register: remove_node_ip register: k8s_node_ips
when: when:
- groups['kube_control_plane'] | length > 0 - groups['kube_control_plane'] | length > 0
- ('etcd' in group_names) - ('etcd' in group_names)
- ip is not defined - ip is not defined
- access_ip is not defined - access_ip is not defined
delegate_to: "{{ groups['etcd'] | first }}" delegate_to: "{{ groups['etcd'] | first }}"
failed_when: false
- name: Set node IP - name: Remove etcd member from cluster
set_fact:
node_ip: "{{ ip | default(access_ip | default(remove_node_ip.stdout)) | trim }}"
when:
- ('etcd' in group_names)
- name: Make sure node_ip is set
assert:
that: node_ip is defined and node_ip | length > 0
msg: "Etcd node ip is not set !"
when:
- ('etcd' in group_names)
- name: Lookup etcd member id
shell: "set -o pipefail && {{ bin_dir }}/etcdctl member list | grep -w {{ node_ip }} | cut -d, -f1"
args:
executable: /bin/bash
register: etcd_member_id
ignore_errors: true # noqa ignore-errors
changed_when: false
check_mode: false
tags:
- facts
environment: environment:
ETCDCTL_API: "3" ETCDCTL_API: "3"
ETCDCTL_CERT: "{{ kube_cert_dir + '/etcd/server.crt' if etcd_deployment_type == 'kubeadm' else etcd_cert_dir + '/admin-' + groups['etcd'] | first + '.pem' }}" ETCDCTL_CERT: "{{ kube_cert_dir + '/etcd/server.crt' if etcd_deployment_type == 'kubeadm' else etcd_cert_dir + '/admin-' + groups['etcd'] | first + '.pem' }}"
@@ -43,16 +20,20 @@
ETCDCTL_ENDPOINTS: "https://127.0.0.1:2379" ETCDCTL_ENDPOINTS: "https://127.0.0.1:2379"
delegate_to: "{{ groups['etcd'] | first }}" delegate_to: "{{ groups['etcd'] | first }}"
when: ('etcd' in group_names) when: ('etcd' in group_names)
block:
- name: Remove etcd member from cluster - name: Lookup members infos
command: "{{ bin_dir }}/etcdctl member remove {{ etcd_member_id.stdout }}" command: "{{ bin_dir }}/etcdctl member list"
environment: register: etcd_members
ETCDCTL_API: "3" changed_when: false
ETCDCTL_CERT: "{{ kube_cert_dir + '/etcd/server.crt' if etcd_deployment_type == 'kubeadm' else etcd_cert_dir + '/admin-' + groups['etcd'] | first + '.pem' }}" check_mode: false
ETCDCTL_KEY: "{{ kube_cert_dir + '/etcd/server.key' if etcd_deployment_type == 'kubeadm' else etcd_cert_dir + '/admin-' + groups['etcd'] | first + '-key.pem' }}" tags:
ETCDCTL_CACERT: "{{ kube_cert_dir + '/etcd/ca.crt' if etcd_deployment_type == 'kubeadm' else etcd_cert_dir + '/ca.pem' }}" - facts
ETCDCTL_ENDPOINTS: "https://127.0.0.1:2379" - name: Remove member from cluster
delegate_to: "{{ groups['etcd'] | first }}" vars:
when: node_ip: "{{ ip if ip is defined else (access_ip if access_ip is defined else (k8s_node_ips.stdout | from_json)[0]) }}"
- ('etcd' in group_names) command:
- etcd_member_id.stdout | length > 0 argv:
- "{{ bin_dir }}/etcdctl"
- member
- remove
- "{{ ((etcd_members.stdout_lines | select('contains', '//' + node_ip + ':'))[0] | split(','))[0] }}"