uninstall_openshift.yml 14 KB

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