mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-05-08 09:57:38 -02:30
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:
@@ -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] }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user