uninstall_openshift.yml 13 KB

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