-
Notifications
You must be signed in to change notification settings - Fork 6
/
destroy.yml
151 lines (144 loc) · 4.82 KB
/
destroy.yml
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
---
- hosts: masters
tasks:
- name: Detect kubernetes cluster exist
stat: path="{{ remote_bin_dir }}/kubectl"
register: st
- name: Delete all namespaces
shell: "{{ remote_bin_dir }}/kubectl get ns|awk '/Active/{print $1}'|grep -v default|grep -v kube-system|xargs -i {{ remote_bin_dir }}/kubectl delete ns {}"
when: st.stat.exists
run_once: true
register: output
changed_when: "'delete' in output.stdout"
ignore_errors: true
- name: Drain all nodes
shell: "{{ remote_bin_dir }}/kubectl drain {{ item }} --ignore-daemonsets"
register: output
when: st.stat.exists
changed_when: "'already cordoned' not in output.stdout"
with_items: "{{ groups['nodes'] }}"
ignore_errors: true
- hosts: nodes
become: true
tasks:
- name: Detect service exist
stat: path=/etc/init/kubelet.conf
register: st1
- name: Detect service exist
stat: path=/etc/systemd/system/kubelet.service
register: st2
- name: Disable node services
service: name={{ item }} enabled=no
when: st1.stat.exists or st2.stat.exists
with_items:
- kubelet
- kube-proxy
- name: Stop node services
service: name={{ item }} state=stopped
when: st1.stat.exists or st2.stat.exists
with_items:
- kubelet
- kube-proxy
- hosts: masters
become: true
tasks:
- name: Detect service exist
stat: path=/etc/init/kube-apiserver.conf
register: st1
- name: Detect service exist
stat: path=/etc/systemd/system/kube-apiserver.service
register: st2
- name: Disable master services
service: name={{ item }} enabled=no
when: st1.stat.exists or st2.stat.exists
with_items:
- kubelet
- kube-apiserver
- kube-proxy
- kube-scheduler
- kube-controller-manager
- name: Stop master services
service: name={{ item }} state=stopped
when: st1.stat.exists or st2.stat.exists
with_items:
- kubelet
- kube-apiserver
- kube-proxy
- kube-scheduler
- kube-controller-manager
- hosts: etcd
become: true
tasks:
- name: Detect service exist
stat: path=/etc/init/etcd.conf
register: st1
- name: Detect service exist
stat: path=/etc/systemd/system/etcd.service
register: st2
- name: Disable services
service: name=etcd enabled=no
when: st1.stat.exists or st2.stat.exists
- name: Stop services
service: name=etcd state=stopped
when: st1.stat.exists or st2.stat.exists
- hosts: all
become: true
tasks:
- name: Detect existing k8s containers
shell: "docker ps -a | awk '/k8s_/{print $1}' | wc -l"
register: k8s_containers
changed_when: k8s_containers.rc != 0
- name: Remove all k8s containers
shell: "docker ps -a | awk '/k8s_/{print $1}' | xargs -i docker rm -f -v {}"
when: k8s_containers.stdout != "0"
register: res
changed_when: res.rc == 0
- name: Detect existing k8s volumes
shell: "df -h | awk '/kubelet/{print $6}' | wc -l"
register: k8s_volumes
changed_when: k8s_volumes.rc != 0
- name: Unmount all k8s volumes
shell: "df -h | awk '/kubelet/{print $6}' | xargs -i umount {}"
when: k8s_volumes.stdout != "0"
register: res
changed_when: res.rc == 0
- name: Delete all files
file: path={{ item }} state=absent
with_items:
- /etc/init/etcd.conf
- /etc/init/kubelet.conf
- /etc/init/kube-proxy.conf
- /etc/init/kube-scheduler.conf
- /etc/init/kube-controller-manager.conf
- /etc/init/kube-apiserver.conf
- /etc/systemd/system/etcd.service
- /etc/systemd/system/kubelet.service
- /etc/systemd/system/kube-proxy.service
- /etc/systemd/system/kube-scheduler.service
- /etc/systemd/system/kube-controller-manager.service
- /etc/systemd/system/kube-apiserver.service
- /etc/kubernetes
- /etc/etcd
- /etc/cni
- "{{ remote_bin_dir }}/hyperkube"
- "{{ remote_bin_dir }}/etcd"
- "{{ remote_bin_dir }}/etcdctl"
- "{{ remote_bin_dir }}/kubectl"
- "{{ remote_bin_dir }}/kubelet"
- "{{ remote_bin_dir }}/proxy"
- "{{ remote_bin_dir }}/scheduler"
- "{{ remote_bin_dir }}/apiserver"
- "{{ remote_bin_dir }}/controller-manager"
- "{{ remote_bin_dir }}/federation-apiserver"
- "{{ remote_bin_dir }}/federation-controller-manager"
- "{{ remote_bin_dir }}/cert-generator.sh"
- "{{ remote_bin_dir }}/docker-load.sh"
- "{{ remote_image_dir }}"
- /usr/local/bin/nsenter
- /opt/cni
- /var/log/kubernetes
- /var/lib/kubelet
- /var/log/etcd
- /var/lib/etcd
- /var/run/kubernetes
- /var/run/calico