--- # This playbook purges Ceph # It removes: packages, configuration files and ALL THE DATA - name: stop ceph cluster hosts: - mons - osds - mdss become: yes vars: # When set to true both groups of packages are purged. # This can cause problem with qemu-kvm purge_all_packages: true # When set to true and raw _multi_journal is used then journal disk are also zapped zap_journal_disks: true ceph_packages: - ceph - ceph-common - ceph-fs-common - ceph-fuse - ceph-mds - ceph-release ceph_remaining_packages: - libcephfs1 - librados2 - libradosstriper1 - librbd1 - python-cephfs - python-rados - python-rbd tasks: - name: get osd numbers shell: ls /var/lib/ceph/osd | cut -d "-" -f 2 register: osd_ids changed_when: false when: osd_group_name in group_names # Infernalis - name: stop ceph.target with systemd service: name: ceph.target state: stopped enabled: no when: ansible_os_family == 'RedHat' and ceph_stable_release == 'infernalis' - name: stop ceph-osd with systemd service: name: ceph-osd@{{item}} state: stopped enabled: no with_items: "{{ osd_ids.stdout_lines }}" when: ansible_os_family == 'RedHat' and ceph_stable_release == 'infernalis' and osd_group_name in group_names - name: stop ceph mons with systemd service: name: ceph-mon@{{ ansible_hostname }} state: stopped enabled: no when: ansible_os_family == 'RedHat' and ceph_stable_release == 'infernalis' and mon_group_name in group_names - name: stop ceph mdss with systemd service: name: ceph-mds@{{ ansible_hostname }} state: stopped when: ansible_os_family == 'RedHat' and ceph_stable_release == 'infernalis' and mds_group_name in group_names # before infernalis - name: stop ceph osds command: service ceph stop osd when: ansible_os_family == 'RedHat' and osd_group_name in group_names and ceph_stable_release != 'infernalis' - name: stop ceph mons command: service ceph stop mon when: ansible_os_family == 'RedHat' and mon_group_name in group_names and ceph_stable_release != 'infernalis' - name: stop ceph mdss command: service ceph stop mds when: ansible_os_family == 'RedHat' and mds_group_name in group_names and ceph_stable_release != 'infernalis' # Ubuntu 14.04 - name: stop ceph osds on ubuntu command: stop ceph-osd-all failed_when: false when: ansible_distribution == 'Ubuntu' and osd_group_name in group_names - name: stop ceph mons on ubuntu command: stop ceph-mon-all failed_when: false when: ansible_distribution == 'Ubuntu' and mon_group_name in group_names - name: stop ceph mdss on ubuntu command: stop ceph-mds-all failed_when: false when: ansible_distribution == 'Ubuntu' and mds_group_name in group_names # rc is 2 if file not found, so no mount point, so no error - name: get osd data mount points shell: ls /var/lib/ceph/osd register: mounted_osd changed_when: false failed_when: mounted_osd.rc != 0 and mounted_osd.rc != 2 when: osd_group_name in group_names - name: umount osd data partition shell: umount /var/lib/ceph/osd/{{ item }} failed_when: false with_items: - "{{ mounted_osd.stdout_lines }}" when: osd_group_name in group_names - name: zap osd disks shell: ceph-disk zap "{{ item }}" with_items: devices when: osd_group_name in group_names - name: zap journal devices shell: ceph-disk zap "{{ item }}" with_items: "{{ raw_journal_devices|default([])|unique }}" when: osd_group_name in group_names and raw_multi_journal and zap_journal_disks - name: purge ceph packages with yum yum: name: "{{ item }}" state: absent with_items: - "{{ ceph_packages }}" when: ansible_pkg_mgr == 'yum' - name: purge ceph packages with dnf dnf: name: "{{ item }}" state: absent with_items: - "{{ ceph_packages }}" when: ansible_pkg_mgr == 'dnf' - name: purge ceph packages with apt apt: name: "{{ item }}" state: absent with_items: - "{{ ceph_packages }}" when: ansible_pkg_mgr == 'apt' - name: purge remaining ceph packages with yum yum: name: "{{ item }}" state: absent with_items: - "{{ ceph_remaining_packages }}" when: ansible_pkg_mgr == 'yum' and purge_all_packages == true - name: purge remaining ceph packages with dnf dnf: name: "{{ item }}" state: absent with_items: - "{{ ceph_remaining_packages }}" when: ansible_pkg_mgr == 'dnf' and purge_all_packages == true - name: purge remaining ceph packages with apt apt: name: "{{ item }}" state: absent with_items: - "{{ ceph_remaining_packages }}" when: ansible_pkg_mgr == 'apt' and purge_all_packages == true - name: remove config file: path: /etc/ceph state: absent - name: remove data file: path: /var/lib/ceph state: absent - name: remove logs file: path: /var/log/ceph state: absent - name: remove form SysV shell: "update-rc.d -f ceph remove" when: ansible_distribution == 'Ubuntu' - name: remove Upstart nad SysV files shell: "find /etc -name '*ceph*' -delete" when: ansible_distribution == 'Ubuntu' - name: remove Upstart and apt logs and cache shell: "find /var -name '*ceph*' -delete" when: ansible_distribution == 'Ubuntu'