]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Rewrite purge-cluster playbook
authorKrzysztof Goreczny <krzysztof.goreczny@intel.com>
Wed, 10 Feb 2016 12:13:39 +0000 (13:13 +0100)
committerKGoreczny <krzysztof.goreczny@intel.com>
Mon, 15 Feb 2016 13:22:25 +0000 (14:22 +0100)
Signed-off-by: Krzysztof Goreczny <krzysztof.goreczny@intel.com>
purge-cluster.yml

index 417ca3ea9937de3edfaef2b80f514c8bdf769fe2..b531a6dd8689ddf4156e38c560187505b3318ba8 100644 (file)
 # This playbook purges Ceph
 # It removes: packages, configuration files and ALL THE DATA
 
-- hosts:
-  - mons
-  - osds
+- name: stop ceph cluster
+  hosts:
+    - mons
+    - osds
+    - mdss
+  become: yes
+
+  vars:
+# When set to true both groups of packages are purged.
+# This can couse problem with qemu-kvm
+    purge_all_packages: 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
 
-  - name: purge ceph
-    command: ceph-deploy purge {{ ansible_fqdn }}
-    delegate_to: 127.0.0.1
+# Infernalis
+  - name: stop ceph.target with systemd
+    service:
+      name: ceph.target
+      state: stopped
+      enabled: no
+    when:
+      ansible_distribution != 'Ubuntu' and
+      ceph_stable_release == 'infernalis'
 
-  - name: remove osd data
-    shell: rm -rf /var/lib/ceph/osd/*/*
-    failed_when: false
+  - name: stop ceph-osd with systemd
+    service:
+      name: ceph-osd@{{item}}
+      state: stopped
+      enabled: no
+    with_items: "{{ osd_ids.stdout_lines }}"
+    when:
+      ansible_distribution != 'Ubuntu' and
+      ceph_stable_release == 'infernalis' and
+      osd_group_name in group_names
 
-  - name: purge remaining data
-    command: ceph-deploy purgedata {{ ansible_fqdn }}
-    delegate_to: 127.0.0.1
+  - name: stop ceph mons with systemd
+    service: 
+      name: ceph-mon@{{ ansible_hostname }} 
+      state: stopped
+      enabled: no
+    when:
+      ansible_distribution != 'Ubuntu' and
+      ceph_stable_release == 'infernalis' and
+      mon_group_name in group_names 
 
-- hosts:
-  - osds
+  - name: stop ceph mdss with systemd
+    service: 
+      name: ceph-mds@{{ ansible_hostname }} 
+      state: stopped
+    when:
+      ansible_distribution != 'Ubuntu' and
+      ceph_stable_release == 'infernalis' and
+      mds_group_name in group_names 
 
-  vars:
-    devices: [ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf' ]
-    partitions: [ '1', '2', '3' ]
+# before infernalis
+  - name: stop ceph osds
+    command: service ceph stop osd
+    when:
+      ansible_distribution != 'Ubuntu' and
+      osd_group_name in group_names and
+      ceph_stable_release != 'infernalis'
 
-  tasks:
+  - name: stop ceph mons
+    command: service ceph stop mon
+    when:
+      ansible_distribution != 'Ubuntu' and
+      mon_group_name in group_names and
+      ceph_stable_release != 'infernalis'
 
-  - name: disk zap
-    command: /usr/sbin/sgdisk --zap-all --clear --mbrtogpt -g -- {{ item }}
-    with_items: devices
+  - name: stop ceph mdss
+    command: service ceph stop mds
+    when:
+      ansible_distribution != 'Ubuntu' 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: disk zap again
-    command: /usr/sbin/sgdisk --zap-all --clear --mbrtogpt -g -- {{ item }}
-    with_items: devices
+  - 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: purge ceph packages
+    package:
+      name: "{{ item }}"
+      state: absent
+    with_items:
+      - "{{ ceph_packages }}"
+
+  - name: purge remaining ceph packages
+    package:
+      name: "{{ item }}"
+      state: absent
+    with_items:
+      - "{{ ceph_remaining_packages }}"
+    when:
+      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: call partprobe
-    command: partprobe
+  - name: remove Upstart and apt logs and cache
+    shell: 'find /var -name "*ceph*" -delete'
+    when:
+      ansible_distribution == 'Ubuntu'
\ No newline at end of file