From 217ce3cad0de4a6be2fc15930b41ec41263f9e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Wed, 15 Jun 2016 17:08:15 +0200 Subject: [PATCH] rolling update: add systemd support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sébastien Han --- rolling_update.yml | 137 +++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/rolling_update.yml b/rolling_update.yml index 18f9ab5de..bb0906875 100644 --- a/rolling_update.yml +++ b/rolling_update.yml @@ -28,9 +28,30 @@ invoking the playbook" when: ireallymeanit != 'yes' -- hosts: all +- hosts: + - mons + - osds + - mdss + - rgws + + become: True tasks: - - debug: msg="gather facts on all hosts for following reference" + - debug: msg="gather facts on all Ceph hosts for following reference" + - name: check if sysvinit + stat: + path: /etc/rc?.d/S??ceph + follow: yes + register: is_sysvinit + + - name: check if upstart + stat: + path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart + register: is_upstart + + - name: check if systemd + command: grep -sq systemd /proc/1/comm + register: is_systemd + - hosts: mons serial: 1 @@ -48,46 +69,25 @@ - ceph-mon post_tasks: - - name: check if sysvinit - stat: - path: /etc/rc?.d/S??ceph - follow: yes - register: monsysvinit - - - name: check if upstart - stat: - path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart - register: monupstart - - - name: check if systemd - command: grep -sq systemd /proc/1/comm - register: is_systemd - - - name: restart the monitor after compaction (upstart) + - name: restart ceph mons with upstart service: name: ceph-mon state: restarted args: id={{ ansible_hostname }} - when: monupstart.stat.exists == True + when: is_upstart.stat.exists == True - - name: restart the monitor after compaction (sysvinit) + - name: restart ceph mons with sysvinit service: name: ceph state: restarted - when: monsysvinit.stat.exists == True + when: is_sysvinit.stat.exists == True - - name: restart monitor(s) + - name: restart ceph mons with systemd service: - name: ceph + name: ceph-mon@{{ ansible_hostname }} state: restarted - args: mon - when: not ansible_os_family == "RedHat" - - - name: restart monitor(s) - service: - name: ceph - state: restarted - when: ansible_os_family == "RedHat" + enabled: yes + when: is_systemd - name: select a running monitor set_fact: mon_host={{ item }} @@ -125,27 +125,30 @@ - ceph-osd post_tasks: - - name: check if sysvinit - shell: stat /var/lib/ceph/osd/ceph-*/sysvinit - register: osdsysvinit - failed_when: false + - name: get osd numbers + shell: "if [ -d /var/lib/ceph/osd ] ; then ls /var/lib/ceph/osd | cut -d '-' -f 2 ; fi" + register: osd_ids + changed_when: false - - name: check if upstart - shell: stat /var/lib/ceph/osd/ceph-*/upstart - register: osdupstart - failed_when: false - - - name: gracefully stop the oss (upstart) + - name: restart ceph osds (upstart) service: name: ceph-osd-all state: restarted - when: osdupstart.rc == 0 + when: is_upstart.stat.exists == True - - name: gracefully stop the osds (sysvinit) + - name: restart ceph osds (sysvinit) service: name: ceph state: restarted - when: osdsysvinit.rc == 0 + when: is_sysvinit.stat.exists == True + + - name: restart ceph osds (systemd) + service: + name: ceph-osd@{{item}} + state: restarted + enabled: yes + with_items: "{{ osd_ids.stdout_lines }}" + when: is_systemd - name: waiting for clean pgs... shell: | @@ -177,30 +180,26 @@ - ceph-mds post_tasks: - - name: check if sysvinit - stat: - path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/sysvinit - register: mdssysvinit - - - name: check if upstart - stat: - path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart - register: mdsupstart - - - name: restart the metadata server (upstart) + - name: restart ceph mdss with upstart service: name: ceph-mds state: restarted args: id={{ ansible_hostname }} - when: mdsupstart.stat.exists == True + when: is_upstart.stat.exists == True - - name: restart the metadata server (sysvinit) + - name: restart ceph mdss with sysvinit service: name: ceph state: restarted args: mds - when: mdssysvinit.stat.exists == True + when: is_sysvinit.stat.exists == True + - name: restart ceph mdss with systemd + service: + name: ceph-mds@{{ ansible_hostname }} + state: restarted + enabled: yes + when: is_systemd - hosts: rgws serial: 1 @@ -214,19 +213,21 @@ - ceph-rgw post_tasks: - - name: restart rados gateway server(s) + - name: restart ceph rgws with systemd service: - name: {{ item }} + name: ceph-radosgw@rgw.{{ ansible_hostname }} state: restarted - with_items: - - radosgw - when: radosgw_frontend == 'civetweb' + enabled: yes + when: is_systemd + + - name: restart ceph rgws with sysvinit + service: + name: radosgw + state: restarted + when: ansible_os_family != 'RedHat' - name: restart rados gateway server(s) service: - name: {{ item }} + name: ceph-radosgw state: restarted - with_items: - - apache2 - - radosgw - when: radosgw_frontend == 'apache' + when: ansible_os_family != 'RedHat'