uninstall.yml 15 KB

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