You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

276 lines
6.6 KiB

7 years ago
7 years ago
7 years ago
6 years ago
  1. ---
  2. - name: reset | include file with pre-reset tasks specific to the network_plugin if exists
  3. include_tasks: "{{ (role_path + '/../network_plugin/' + kube_network_plugin + '/tasks/pre-reset.yml') | realpath }}"
  4. when:
  5. - kube_network_plugin in ['contiv']
  6. tags:
  7. - network
  8. - name: reset | stop services
  9. service:
  10. name: "{{ item }}"
  11. state: stopped
  12. with_items:
  13. - kubelet
  14. - vault
  15. - etcd
  16. - etcd-events
  17. failed_when: false
  18. tags:
  19. - services
  20. - name: reset | remove services
  21. file:
  22. path: "/etc/systemd/system/{{ item }}.service"
  23. state: absent
  24. with_items:
  25. - kubelet
  26. - etcd
  27. - etcd-events
  28. - vault
  29. - calico-node
  30. register: services_removed
  31. tags:
  32. - services
  33. - name: reset | remove docker dropins
  34. file:
  35. path: "/etc/systemd/system/docker.service.d/{{ item }}"
  36. state: absent
  37. with_items:
  38. - docker-dns.conf
  39. - docker-options.conf
  40. - http-proxy.conf
  41. register: docker_dropins_removed
  42. tags:
  43. - docker
  44. - name: reset | systemctl daemon-reload
  45. systemd:
  46. daemon_reload: true
  47. when: services_removed.changed or docker_dropins_removed.changed
  48. - name: reset | remove all containers
  49. shell: "{{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"
  50. register: remove_all_containers
  51. retries: 4
  52. until: remove_all_containers.rc == 0
  53. delay: 5
  54. tags:
  55. - docker
  56. - name: reset | restart docker if needed
  57. service:
  58. name: docker
  59. state: restarted
  60. when: docker_dropins_removed.changed
  61. tags:
  62. - docker
  63. - name: reset | stop all cri-o containers
  64. shell: "crictl ps -aq | xargs -r crictl stop"
  65. register: remove_all_crio_containers
  66. retries: 4
  67. until: remove_all_crio_containers.rc == 0
  68. delay: 5
  69. tags:
  70. - crio
  71. when: container_manager == 'crio'
  72. - name: reset | remove all cri-o containers
  73. shell: "crictl ps -aq | xargs -r crictl rm"
  74. register: remove_all_crio_containers
  75. retries: 4
  76. until: remove_all_crio_containers.rc == 0
  77. delay: 5
  78. tags:
  79. - crio
  80. when: container_manager == 'crio' and deploy_container_engine|default(true)
  81. - name: reset | stop all cri-o pods
  82. shell: "crictl pods -q | xargs -r crictl stopp"
  83. register: remove_all_crio_containers
  84. retries: 4
  85. until: remove_all_crio_containers.rc == 0
  86. delay: 5
  87. tags:
  88. - crio
  89. when: container_manager == 'crio'
  90. - name: reset | remove all cri-o pods
  91. shell: "crictl pods -q | xargs -r crictl rmp"
  92. register: remove_all_crio_containers
  93. retries: 4
  94. until: remove_all_crio_containers.rc == 0
  95. delay: 5
  96. tags:
  97. - crio
  98. when: container_manager == 'crio'
  99. - name: reset | gather mounted kubelet dirs
  100. shell: mount | grep /var/lib/kubelet/ | awk '{print $3}' | tac
  101. args:
  102. warn: false
  103. check_mode: no
  104. register: mounted_dirs
  105. tags:
  106. - mounts
  107. - name: reset | unmount kubelet dirs
  108. command: umount -f {{item}}
  109. with_items: '{{ mounted_dirs.stdout_lines }}'
  110. register: umount_dir
  111. retries: 4
  112. until: umount_dir.rc == 0
  113. delay: 5
  114. tags:
  115. - mounts
  116. - name: flush iptables
  117. iptables:
  118. table: "{{ item }}"
  119. flush: yes
  120. with_items:
  121. - filter
  122. - nat
  123. when: flush_iptables|bool
  124. tags:
  125. - iptables
  126. - name: Clear IPVS virtual server table
  127. shell: "ipvsadm -C"
  128. when:
  129. - kube_proxy_mode == 'ipvs' and inventory_hostname in groups['k8s-cluster']
  130. - name: reset | check kube-ipvs0 network device
  131. stat:
  132. path: /sys/class/net/kube-ipvs0
  133. register: kube_ipvs0
  134. - name: reset | Remove kube-ipvs0
  135. command: "ip link del kube-ipvs0"
  136. when:
  137. - kube_proxy_mode == 'ipvs'
  138. - kube_ipvs0.stat.exists
  139. - name: reset | check nodelocaldns network device
  140. stat:
  141. path: /sys/class/net/nodelocaldns
  142. register: nodelocaldns_device
  143. - name: reset | Remove nodelocaldns
  144. command: "ip link del nodelocaldns"
  145. when:
  146. - enable_nodelocaldns|default(false)|bool
  147. - nodelocaldns_device.stat.exists
  148. - name: reset | delete some files and directories
  149. file:
  150. path: "{{ item }}"
  151. state: absent
  152. with_items:
  153. - "{{kube_config_dir}}"
  154. - /var/lib/kubelet
  155. - /root/.kube
  156. - /root/.helm
  157. - "{{ etcd_data_dir }}"
  158. - /var/lib/etcd-events
  159. - /etc/ssl/etcd
  160. - /var/log/calico
  161. - /etc/cni
  162. - "{{ nginx_config_dir }}"
  163. - /etc/dnsmasq.d
  164. - /etc/dnsmasq.conf
  165. - /etc/dnsmasq.d-available
  166. - /etc/etcd.env
  167. - /etc/calico
  168. - /etc/weave.env
  169. - /opt/cni
  170. - /etc/dhcp/dhclient.d/zdnsupdate.sh
  171. - /etc/dhcp/dhclient-exit-hooks.d/zdnsupdate
  172. - /run/flannel
  173. - /etc/flannel
  174. - /run/kubernetes
  175. - /usr/local/share/ca-certificates/etcd-ca.crt
  176. - /usr/local/share/ca-certificates/kube-ca.crt
  177. - /usr/local/share/ca-certificates/vault-ca.crt
  178. - /etc/ssl/certs/etcd-ca.pem
  179. - /etc/ssl/certs/kube-ca.pem
  180. - /etc/ssl/certs/vault-ca.crt
  181. - /etc/pki/ca-trust/source/anchors/etcd-ca.crt
  182. - /etc/pki/ca-trust/source/anchors/kube-ca.crt
  183. - /etc/pki/ca-trust/source/anchors/vault-ca.crt
  184. - /etc/vault
  185. - /var/log/pods/
  186. - "{{ bin_dir }}/kubelet"
  187. - "{{ bin_dir }}/etcd-scripts"
  188. - "{{ bin_dir }}/etcd"
  189. - "{{ bin_dir }}/etcd-events"
  190. - "{{ bin_dir }}/etcdctl"
  191. - "{{ bin_dir }}/kubernetes-scripts"
  192. - "{{ bin_dir }}/kubectl"
  193. - "{{ bin_dir }}/kubeadm"
  194. - "{{ bin_dir }}/helm"
  195. - "{{ bin_dir }}/calicoctl"
  196. - "{{ bin_dir }}/calico-upgrade"
  197. - "{{ bin_dir }}/weave"
  198. - /var/lib/rkt
  199. - /var/lib/cni
  200. - /etc/vault
  201. - /etc/contiv
  202. - /var/contiv
  203. - /run/contiv
  204. - /etc/openvswitch
  205. - /run/openvswitch
  206. - /var/lib/kube-router
  207. ignore_errors: yes
  208. tags:
  209. - files
  210. - name: reset | remove dns settings from dhclient.conf
  211. blockinfile:
  212. path: "{{ item }}"
  213. state: absent
  214. marker: "# Ansible entries {mark}"
  215. failed_when: false
  216. with_items:
  217. - /etc/dhclient.conf
  218. - /etc/dhcp/dhclient.conf
  219. tags:
  220. - files
  221. - dns
  222. - name: reset | remove host entries from /etc/hosts
  223. blockinfile:
  224. path: "/etc/hosts"
  225. state: absent
  226. marker: "# Ansible inventory hosts {mark}"
  227. tags:
  228. - files
  229. - dns
  230. - name: reset | include file with reset tasks specific to the network_plugin if exists
  231. include_tasks: "{{ (role_path + '/../network_plugin/' + kube_network_plugin + '/tasks/reset.yml') | realpath }}"
  232. when:
  233. - kube_network_plugin in ['flannel', 'cilium', 'contiv', 'kube-router', 'calico']
  234. tags:
  235. - network
  236. - name: reset | Restart network
  237. service:
  238. name: >-
  239. {% if ansible_os_family == "RedHat" -%}
  240. network
  241. {%- elif ansible_distribution == "Ubuntu" and ansible_distribution_release == "bionic" -%}
  242. systemd-networkd
  243. {%- elif ansible_os_family == "Debian" -%}
  244. networking
  245. {%- endif %}
  246. state: restarted
  247. when:
  248. - ansible_os_family not in ["CoreOS", "Container Linux by CoreOS"]
  249. - reset_restart_network
  250. tags:
  251. - services
  252. - network