uninstall_openshift.yml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. # This deletes *ALL* Origin and OpenShift Container Platform content installed by
  2. # ansible. This includes:
  3. #
  4. # configuration
  5. # containers
  6. # example templates and imagestreams
  7. # images
  8. # RPMs
  9. ---
  10. # Stop services on all hosts prior to removing files.
  11. - hosts: nodes
  12. become: yes
  13. tasks:
  14. - name: Remove dnsmasq dispatcher
  15. file:
  16. path: "{{ item }}"
  17. state: absent
  18. with_items:
  19. - /etc/dnsmasq.d/origin-dns.conf
  20. - /etc/dnsmasq.d/origin-upstream-dns.conf
  21. - /etc/dnsmasq.d/openshift-ansible.conf
  22. - /etc/NetworkManager/dispatcher.d/99-origin-dns.sh
  23. - service:
  24. name: NetworkManager
  25. state: restarted
  26. - name: Stop services
  27. service: name={{ item }} state=stopped
  28. with_items:
  29. - atomic-openshift-node
  30. - openshift-node
  31. - origin-node
  32. failed_when: false
  33. - name: Stop OVS service
  34. service: name=openvswitch state=stopped
  35. failed_when: false
  36. when: openshift_use_openshift_sdn | default(True) | bool
  37. - hosts: etcd
  38. become: yes
  39. tasks:
  40. - name: Stop services
  41. service: name={{ item }} state=stopped
  42. with_items:
  43. - etcd
  44. failed_when: false
  45. - hosts: lb
  46. become: yes
  47. tasks:
  48. - name: Stop services
  49. service: name={{ item }} state=stopped
  50. with_items:
  51. - haproxy
  52. failed_when: false
  53. - hosts: nodes
  54. become: yes
  55. vars:
  56. node_dirs:
  57. - "/etc/origin"
  58. - "/var/lib/origin"
  59. tasks:
  60. - name: unmask services
  61. command: systemctl unmask "{{ item }}"
  62. changed_when: False
  63. failed_when: False
  64. with_items:
  65. - firewalld
  66. - when: openshift_remove_all | default(true) | bool
  67. block:
  68. - name: Remove packages
  69. package:
  70. name: "{{ pkg_list | join(',') }} "
  71. state: absent
  72. vars:
  73. pkg_list:
  74. - atomic-openshift
  75. - atomic-openshift-clients
  76. - atomic-openshift-excluder
  77. - atomic-openshift-docker-excluder
  78. - atomic-openshift-node
  79. - atomic-openshift-sdn-ovs
  80. - atomic-openshift-hyperkube
  81. - cockpit-bridge
  82. - cockpit-docker
  83. - cockpit-system
  84. - cockpit-ws
  85. - kubernetes-client
  86. - openshift
  87. - openshift-node
  88. - openshift-sdn
  89. - openshift-sdn-ovs
  90. - origin
  91. - origin-excluder
  92. - origin-docker-excluder
  93. - origin-clients
  94. - origin-node
  95. - origin-sdn-ovs
  96. - origin-hyperkube
  97. - tuned-profiles-atomic-openshift-node
  98. - tuned-profiles-origin-node
  99. register: result
  100. until: result is succeeded
  101. - name: Remove OVS package
  102. package:
  103. name: openvswitch
  104. state: absent
  105. register: result
  106. until: result is succeeded
  107. when: openshift_use_openshift_sdn | default(True) | bool
  108. - name: Remove flannel package
  109. package:
  110. name: flannel
  111. state: absent
  112. when: openshift_use_flannel | default(false) | bool
  113. register: result
  114. until: result is succeeded
  115. - shell: systemctl reset-failed
  116. changed_when: False
  117. - shell: systemctl daemon-reload
  118. changed_when: False
  119. - name: Remove br0 interface
  120. shell: ovs-vsctl del-br br0
  121. changed_when: False
  122. failed_when: False
  123. when: openshift_use_openshift_sdn | default(True) | bool
  124. - name: Remove linux interfaces
  125. shell: ip link del "{{ item }}"
  126. changed_when: False
  127. failed_when: False
  128. with_items:
  129. - lbr0
  130. - vlinuxbr
  131. - vovsbr
  132. when: openshift_use_openshift_sdn | default(True) | bool
  133. - name: Remove virtual devices
  134. command: nmcli delete device "{{ item }}"
  135. failed_when: False
  136. with_items:
  137. - tun0
  138. when: openshift_use_openshift_sdn | default(True) | bool
  139. - shell: find /var/lib/origin/openshift.local.volumes -type d -exec umount {} \; 2>/dev/null || true
  140. changed_when: False
  141. - shell: docker rm -f "{{ item }}"-master "{{ item }}"-node
  142. changed_when: False
  143. failed_when: False
  144. with_items:
  145. - openshift-enterprise
  146. - origin
  147. - shell: docker ps -a | grep Exited | egrep "{{ item }}" | awk '{print $1}'
  148. changed_when: False
  149. failed_when: False
  150. register: exited_containers_to_delete
  151. with_items:
  152. - openshift3/ose
  153. - openshift3/node
  154. - openshift3/openvswitch
  155. - openshift/origin
  156. - shell: "docker rm {{ item.stdout_lines | join(' ') }}"
  157. changed_when: False
  158. failed_when: False
  159. with_items: "{{ exited_containers_to_delete.results }}"
  160. - name: Remove k8s_ containters
  161. shell: docker ps -a -q -f name=k8s_ | xargs docker rm -f
  162. failed_when: False
  163. - block:
  164. - block:
  165. - shell: docker images | egrep {{ item }} | awk '{ print $3 }'
  166. changed_when: False
  167. failed_when: False
  168. register: images_to_delete
  169. with_items:
  170. - registry\.access\..*redhat\.com/openshift3
  171. - registry\.qe\.openshift\.com/.*
  172. - registry\.access\..*redhat\.com/rhel7/etcd
  173. - docker.io/openshift
  174. - shell: "docker rmi -f {{ item.stdout_lines | join(' ') }}"
  175. changed_when: False
  176. failed_when: False
  177. with_items: "{{ images_to_delete.results }}"
  178. when: openshift_uninstall_images | default(True) | bool
  179. - name: remove sdn drop files
  180. file:
  181. path: /run/openshift-sdn
  182. state: absent
  183. - name: Remove files owned by RPMs
  184. file: path={{ item }} state=absent
  185. with_items:
  186. - /etc/sysconfig/openshift-node
  187. - /run/openshift-sdn
  188. - name: Remove files owned by OVS RPM
  189. file: path=/etc/sysconfig/openvswitch state=absent
  190. when: openshift_use_openshift_sdn | default(True) | bool
  191. when: openshift_remove_all | default(True) | bool
  192. - find: path={{ item }} file_type=file
  193. register: files
  194. with_items:
  195. - "{{ node_dirs }}"
  196. - find: path={{ item }} file_type=directory
  197. register: directories
  198. with_items:
  199. - "{{ node_dirs }}"
  200. - file: path={{ item.1.path }} state=absent
  201. with_subelements:
  202. - "{{ files.results | default([]) }}"
  203. - files
  204. - file: path={{ item.1.path }} state=absent
  205. with_subelements:
  206. - "{{ directories.results | default([]) }}"
  207. - files
  208. - shell: systemctl daemon-reload
  209. changed_when: False
  210. - name: Remove remaining files
  211. file: path={{ item }} state=absent
  212. with_items:
  213. - /etc/ansible/facts.d/openshift.fact
  214. - /etc/openshift
  215. - /etc/openshift-sdn
  216. - /etc/pki/ca-trust/source/anchors/openshift-ca.crt
  217. - /etc/sysconfig/atomic-openshift-node
  218. - /etc/sysconfig/atomic-openshift-node-dep
  219. - /etc/sysconfig/openshift-node-dep
  220. - /etc/sysconfig/origin-node
  221. - /etc/sysconfig/origin-node
  222. - /etc/sysconfig/origin-node-dep
  223. - /etc/systemd/system/atomic-openshift-node-dep.service
  224. - /etc/systemd/system/atomic-openshift-node.service
  225. - /etc/systemd/system/atomic-openshift-node.service.wants
  226. - /etc/systemd/system/origin-node-dep.service
  227. - /etc/systemd/system/origin-node.service
  228. - /etc/systemd/system/origin-node.service.wants
  229. - name: Remove remaining OVS files
  230. file: path={{ item }} state=absent
  231. with_items:
  232. - /etc/systemd/system/openvswitch.service
  233. when: openshift_use_openshift_sdn | default(True) | bool
  234. - name: Rebuild ca-trust
  235. command: update-ca-trust
  236. - hosts: masters
  237. become: yes
  238. vars:
  239. master_dirs:
  240. - "/etc/origin"
  241. - "/var/lib/origin"
  242. tasks:
  243. - name: unmask services
  244. command: systemctl unmask "{{ item }}"
  245. changed_when: False
  246. failed_when: False
  247. with_items:
  248. - firewalld
  249. - atomic-openshift-master
  250. - name: Remove packages
  251. package:
  252. name: "{{ pkg_list | join(',') }}"
  253. state: absent
  254. when:
  255. - openshift_remove_all | default(True) | bool
  256. vars:
  257. pkg_list:
  258. - atomic-openshift
  259. - atomic-openshift-clients
  260. - atomic-openshift-excluder
  261. - atomic-openshift-docker-excluder
  262. - atomic-openshift-master
  263. - cockpit-bridge
  264. - cockpit-docker
  265. - cockpit-system
  266. - cockpit-ws
  267. - corosync
  268. - kubernetes-client
  269. - openshift
  270. - openshift-master
  271. - origin
  272. - origin-clients
  273. - origin-excluder
  274. - origin-docker-excluder
  275. - origin-master
  276. register: result
  277. until: result is succeeded
  278. - shell: systemctl reset-failed
  279. changed_when: False
  280. - shell: systemctl daemon-reload
  281. changed_when: False
  282. - name: Remove files owned by RPMs
  283. file: path={{ item }} state=absent
  284. with_items:
  285. - /etc/sysconfig/atomic-openshift-master
  286. when: openshift_remove_all | default(True) | bool
  287. - name: Remove files owned by OVS RPM
  288. file: path={{ item }} state=absent
  289. with_items:
  290. - /etc/sysconfig/openvswitch
  291. when:
  292. - openshift_remove_all | default(True) | bool
  293. - openshift_use_openshift_sdn | default(True) | bool
  294. - find: path={{ item }} file_type=file
  295. register: files
  296. with_items:
  297. - "{{ master_dirs }}"
  298. - find: path={{ item }} file_type=directory
  299. register: directories
  300. with_items:
  301. - "{{ master_dirs }}"
  302. - file: path={{ item.1.path }} state=absent
  303. with_subelements:
  304. - "{{ files.results | default([]) }}"
  305. - files
  306. - file: path={{ item.1.path }} state=absent
  307. with_subelements:
  308. - "{{ directories.results | default([]) }}"
  309. - files
  310. - set_fact:
  311. client_users: "{{ [ansible_ssh_user, 'root'] | unique }}"
  312. - name: Remove client kubeconfigs
  313. file:
  314. path: "~{{ item }}/.kube"
  315. state: absent
  316. with_items:
  317. - "{{ client_users }}"
  318. - name: Remove remaining files
  319. file: path={{ item }} state=absent
  320. with_items:
  321. - /etc/ansible/facts.d/openshift.fact
  322. - /etc/corosync
  323. - /usr/share/openshift/examples
  324. - /usr/local/bin/openshift
  325. - /usr/local/bin/oadm
  326. - /usr/local/bin/oc
  327. - /usr/local/bin/kubectl
  328. - /etc/flannel
  329. - name: Remove remaining OVS files
  330. file: path={{ item }} state=absent
  331. with_items:
  332. - /etc/systemd/system/openvswitch.service
  333. when: openshift_use_openshift_sdn | default(True) | bool
  334. - hosts: etcd
  335. become: yes
  336. vars:
  337. etcd_dirs:
  338. - "/etc/etcd"
  339. - "/var/lib/etcd"
  340. tasks:
  341. - name: unmask services
  342. command: systemctl unmask "{{ item }}"
  343. changed_when: False
  344. failed_when: False
  345. with_items:
  346. - etcd
  347. - etcd3
  348. - firewalld
  349. - name: Remove packages
  350. package:
  351. name: "{{ pkg_list | join(',') }}"
  352. state: absent
  353. when:
  354. - openshift_remove_all | default(True) | bool
  355. vars:
  356. pkg_list:
  357. - etcd
  358. - etcd3
  359. register: result
  360. until: result is succeeded
  361. - shell: systemctl reset-failed
  362. changed_when: False
  363. - shell: systemctl daemon-reload
  364. changed_when: False
  365. - find: path={{ item }} file_type=file
  366. register: files
  367. with_items:
  368. - "{{ etcd_dirs }}"
  369. - find: path={{ item }} file_type=directory
  370. register: directories
  371. with_items:
  372. - "{{ etcd_dirs }}"
  373. - file: path={{ item.1.path }} state=absent
  374. with_subelements:
  375. - "{{ files.results | default([]) }}"
  376. - files
  377. - file: path={{ item.1.path }} state=absent
  378. with_subelements:
  379. - "{{ directories.results | default([]) }}"
  380. - files
  381. # Intenationally using rm command over file module because if someone had mounted a filesystem
  382. # at /var/lib/etcd then the contents was not removed correctly
  383. - name: Remove etcd data
  384. shell: rm -rf /var/lib/etcd/*
  385. args:
  386. warn: no
  387. failed_when: false
  388. - name: Remove remaining files
  389. file: path={{ item }} state=absent
  390. with_items:
  391. - /etc/ansible/facts.d/openshift.fact
  392. - /etc/systemd/system/etcd_container.service
  393. - /etc/profile.d/etcdctl.sh
  394. - hosts: lb
  395. become: yes
  396. tasks:
  397. - name: unmask services
  398. command: systemctl unmask "{{ item }}"
  399. changed_when: False
  400. failed_when: False
  401. with_items:
  402. - firewalld
  403. - name: Remove packages
  404. package:
  405. name: haproxy
  406. state: absent
  407. when:
  408. - openshift_remove_all | default(True) | bool
  409. register: result
  410. until: result is succeeded
  411. - shell: systemctl reset-failed
  412. changed_when: False
  413. - shell: systemctl daemon-reload
  414. changed_when: False
  415. - name: Remove remaining files
  416. file: path={{ item }} state=absent
  417. with_items:
  418. - /etc/ansible/facts.d/openshift.fact
  419. - /var/lib/haproxy/stats
  420. # Here we remove only limits.conf rather than directory, as users may put their files.
  421. # - /etc/systemd/system/haproxy.service.d
  422. - /etc/systemd/system/haproxy.service.d/limits.conf
  423. - /etc/systemd/system/haproxy.service