Rewrite purge-cluster playbook

Signed-off-by: Krzysztof Goreczny <krzysztof.goreczny@intel.com>
pull/542/head
Krzysztof Goreczny 2016-02-10 13:13:39 +01:00 committed by KGoreczny
parent db1cf0e292
commit bbcdf2fde7
1 changed files with 181 additions and 30 deletions

View File

@ -2,42 +2,193 @@
# This playbook purges Ceph
# It removes: packages, configuration files and ALL THE DATA
- hosts:
- mons
- osds
tasks:
- name: purge ceph
command: ceph-deploy purge {{ ansible_fqdn }}
delegate_to: 127.0.0.1
- name: remove osd data
shell: rm -rf /var/lib/ceph/osd/*/*
failed_when: false
- name: purge remaining data
command: ceph-deploy purgedata {{ ansible_fqdn }}
delegate_to: 127.0.0.1
- hosts:
- osds
- name: stop ceph cluster
hosts:
- mons
- osds
- mdss
become: yes
vars:
devices: [ '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf' ]
partitions: [ '1', '2', '3' ]
# 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: disk zap
command: /usr/sbin/sgdisk --zap-all --clear --mbrtogpt -g -- {{ item }}
with_items: devices
# 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: 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: 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
- 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
# 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'
- 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: 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: call partprobe
command: partprobe
- 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: remove Upstart and apt logs and cache
shell: 'find /var -name "*ceph*" -delete'
when:
ansible_distribution == 'Ubuntu'