9af719bf99
Since we are already on an etcd node while executing the commands, there is no need to find out an etcd IP because it is on localhost.
60 lines
2.3 KiB
YAML
60 lines
2.3 KiB
YAML
---
|
|
- name: Lookup node IP in kubernetes
|
|
command: >
|
|
{{ kubectl }} get nodes {{ node }}
|
|
-o jsonpath={range.status.addresses[?(@.type=="InternalIP")]}{.address}{"\n"}{end}
|
|
register: remove_node_ip
|
|
when:
|
|
- inventory_hostname in groups['etcd']
|
|
- ip is not defined
|
|
- access_ip is not defined
|
|
delegate_to: "{{ groups['etcd']|first }}"
|
|
failed_when: false
|
|
|
|
- name: Set node IP
|
|
set_fact:
|
|
node_ip: "{{ ip | default(access_ip | default(remove_node_ip.stdout)) | trim }}"
|
|
when:
|
|
- inventory_hostname in groups['etcd']
|
|
|
|
- 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:
|
|
- inventory_hostname in groups['etcd']
|
|
|
|
- name: Lookup etcd member id
|
|
shell: "{{ bin_dir }}/etcdctl member list | grep {{ node_ip }} | cut -d, -f1"
|
|
register: etcd_member_id
|
|
ignore_errors: true # noqa ignore-errors
|
|
changed_when: false
|
|
check_mode: no
|
|
tags:
|
|
- facts
|
|
environment:
|
|
ETCDCTL_API: 3
|
|
ETCDCTL_CERT: "{{ kube_cert_dir + '/etcd/server.crt' if etcd_kubeadm_enabled else etcd_cert_dir + '/admin-' + groups['etcd']|first + '.pem' }}"
|
|
ETCDCTL_KEY: "{{ kube_cert_dir + '/etcd/server.key' if etcd_kubeadm_enabled else etcd_cert_dir + '/admin-' + groups['etcd']|first + '-key.pem' }}"
|
|
ETCDCTL_CACERT: "{{ kube_cert_dir + '/etcd/ca.crt' if etcd_kubeadm_enabled else etcd_cert_dir + '/ca.pem' }}"
|
|
ETCDCTL_ENDPOINTS: "https://127.0.0.1:2379"
|
|
delegate_to: "{{ groups['etcd']|first }}"
|
|
when: inventory_hostname in groups['etcd']
|
|
|
|
- name: Remove etcd member from cluster
|
|
command: "{{ bin_dir }}/etcdctl member remove {{ etcd_member_id.stdout }}"
|
|
register: etcd_member_in_cluster
|
|
changed_when: false
|
|
check_mode: no
|
|
tags:
|
|
- facts
|
|
environment:
|
|
ETCDCTL_API: 3
|
|
ETCDCTL_CERT: "{{ kube_cert_dir + '/etcd/server.crt' if etcd_kubeadm_enabled else etcd_cert_dir + '/admin-' + groups['etcd']|first + '.pem' }}"
|
|
ETCDCTL_KEY: "{{ kube_cert_dir + '/etcd/server.key' if etcd_kubeadm_enabled else etcd_cert_dir + '/admin-' + groups['etcd']|first + '-key.pem' }}"
|
|
ETCDCTL_CACERT: "{{ kube_cert_dir + '/etcd/ca.crt' if etcd_kubeadm_enabled else etcd_cert_dir + '/ca.pem' }}"
|
|
ETCDCTL_ENDPOINTS: "https://127.0.0.1:2379"
|
|
delegate_to: "{{ groups['etcd']|first }}"
|
|
when:
|
|
- inventory_hostname in groups['etcd']
|
|
- etcd_member_id.stdout | length > 0
|