aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/etcd/tasks/remove_deleted_members.yml
blob: 188498e5cbbf2cdf4aa8ae3af4a388fe0b5a7487 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
---
- name: List the etcd members
  vars:
    service_name: "etcd"
    service: "{{ etcd_services[service_name] }}"
  become: true
  command: >-
    {{ kolla_container_engine }} exec {{ service.container_name }}
    etcdctl member list
  changed_when: false
  run_once: true
  delegate_to: "{{ etcd_cluster_leader | default(groups[service.group][0]) }}"
  register: etcd_member_list_result

- name: Remove deleted members from the etcd cluster
  vars:
    service_name: "etcd"
    service: "{{ etcd_services[service_name] }}"
    etcd_members_from_inventory: >-
      {{ groups['etcd']
      | map('extract', hostvars, 'ansible_facts')
      | map(attribute='hostname')
      | list }}
    etcd_deleted_members: >-
      {{ etcd_member_list_result.stdout | from_json
      | json_query('members[].name')
      | difference(etcd_members_from_inventory) }}
    etcd_member_id: >-
      {{ etcd_member_list_result.stdout | from_json
      | json_query('members[].{key: name, value: ID}') | items2dict }}
  become: true
  command: >-
    {{ kolla_container_engine }} exec {{ service.container_name }}
    etcdctl member remove {{ '%x' % etcd_member_id[etcd_deleted_member] }}
  run_once: true
  delegate_to: "{{ etcd_cluster_leader | default(groups[service.group][0]) }}"
  loop: "{{ etcd_deleted_members }}"
  loop_control:
    loop_var: etcd_deleted_member