rolling-upgrade: cleanup and cosmetic

refactoring the current code to apply the default syntax style that is
used in the entire playbook.

Signed-off-by: Sébastien Han <seb@redhat.com>
pull/826/head
Sébastien Han 2016-05-31 18:13:47 +02:00
parent 21c2555049
commit e0d1c66a59
1 changed files with 94 additions and 67 deletions

View File

@ -1,6 +1,6 @@
--- ---
# This playbook does a rolling update for all the Ceph services # This playbook does a rolling update for all the Ceph services
# Change the value of serial: to adjust the number of server to be updated. # Change the value of 'serial:' to adjust the number of server to be updated.
# #
# The four roles that apply to the ceph hosts will be applied: ceph-common, # The four roles that apply to the ceph hosts will be applied: ceph-common,
# ceph-mon, ceph-osd and ceph-mds. So any changes to configuration, package updates, etc, # ceph-mon, ceph-osd and ceph-mds. So any changes to configuration, package updates, etc,
@ -9,18 +9,38 @@
# /!\ DO NOT FORGET TO CHANGE THE RELEASE VERSION FIRST! /!\ # /!\ DO NOT FORGET TO CHANGE THE RELEASE VERSION FIRST! /!\
- name: confirm whether user really meant to upgrade the cluster
hosts: localhost
vars_prompt:
- name: ireallymeanit
prompt: Are you sure you want to upgrade the cluster?
default: 'no'
private: no
tasks:
- name: exit playbook, if user did not mean to upgrade cluster
fail:
msg: >
"Exiting rolling_update.yml playbook, cluster was NOT upgraded.
To upgrade the cluster, either say 'yes' on the prompt or
or use `-e ireallymeanit=yes` on the command line when
invoking the playbook"
when: ireallymeanit != 'yes'
- hosts: all - hosts: all
tasks: tasks:
- debug: msg="gather facts on all hosts for following reference" - debug: msg="gather facts on all hosts for following reference"
- hosts: mons - hosts: mons
serial: 1 serial: 1
sudo: True become: True
vars: vars:
upgrade_ceph_packages: True upgrade_ceph_packages: True
mon_group_name: mons
pre_tasks: pre_tasks:
- name: Compress the store as much as possible - name: compress the store as much as possible
command: ceph tell mon.{{ ansible_hostname }} compact command: ceph tell mon.{{ ansible_hostname }} compact
roles: roles:
@ -28,41 +48,45 @@
- ceph-mon - ceph-mon
post_tasks: post_tasks:
- name: Check if sysvinit - name: check if sysvinit
stat: > stat:
path=/etc/rc?.d/S??ceph path: /etc/rc?.d/S??ceph
follow=yes follow: yes
register: monsysvinit register: monsysvinit
- name: Check if upstart - name: check if upstart
stat: > stat:
path=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart
register: monupstart register: monupstart
- name: Restart the monitor after compaction (Upstart) - name: check if systemd
service: > command: grep -sq systemd /proc/1/comm
name=ceph-mon register: is_systemd
state=restarted
args=id={{ ansible_hostname }} - name: restart the monitor after compaction (upstart)
service:
name: ceph-mon
state: restarted
args: id={{ ansible_hostname }}
when: monupstart.stat.exists == True when: monupstart.stat.exists == True
- name: Restart the monitor after compaction (Sysvinit) - name: restart the monitor after compaction (sysvinit)
service: > service:
name=ceph name: ceph
state=restarted state: restarted
when: monsysvinit.stat.exists == True when: monsysvinit.stat.exists == True
- name: restart monitor(s) - name: restart monitor(s)
service: > service:
name=ceph name: ceph
state=restarted state: restarted
args=mon args: mon
when: not ansible_os_family == "RedHat" when: not ansible_os_family == "RedHat"
- name: restart monitor(s) - name: restart monitor(s)
service: > service:
name=ceph name: ceph
state=restarted state: restarted
when: ansible_os_family == "RedHat" when: ansible_os_family == "RedHat"
- name: select a running monitor - name: select a running monitor
@ -70,8 +94,8 @@
with_items: groups.mons with_items: groups.mons
when: item != inventory_hostname when: item != inventory_hostname
- name: Waiting for the monitor to join the quorum... - name: waiting for the monitor to join the quorum...
shell: > shell: |
ceph -s | grep monmap | sed 's/.*quorum//' | egrep -sq {{ ansible_hostname }} ceph -s | grep monmap | sed 's/.*quorum//' | egrep -sq {{ ansible_hostname }}
register: result register: result
until: result.rc == 0 until: result.rc == 0
@ -82,12 +106,13 @@
- hosts: osds - hosts: osds
serial: 1 serial: 1
sudo: True become: True
vars: vars:
upgrade_ceph_packages: True upgrade_ceph_packages: True
osd_group_name: osds
pre_tasks: pre_tasks:
- name: Set OSD flags - name: set osd flags
command: ceph osd set {{ item }} command: ceph osd set {{ item }}
with_items: with_items:
- noout - noout
@ -100,30 +125,30 @@
- ceph-osd - ceph-osd
post_tasks: post_tasks:
- name: Check if sysvinit - name: check if sysvinit
shell: stat /var/lib/ceph/osd/ceph-*/sysvinit shell: stat /var/lib/ceph/osd/ceph-*/sysvinit
register: osdsysvinit register: osdsysvinit
failed_when: false failed_when: false
- name: Check if upstart - name: check if upstart
shell: stat /var/lib/ceph/osd/ceph-*/upstart shell: stat /var/lib/ceph/osd/ceph-*/upstart
register: osdupstart register: osdupstart
failed_when: false failed_when: false
- name: Gracefully stop the OSDs (Upstart) - name: gracefully stop the oss (upstart)
service: > service:
name=ceph-osd-all name: ceph-osd-all
state=restarted state: restarted
when: osdupstart.rc == 0 when: osdupstart.rc == 0
- name: Gracefully stop the OSDs (Sysvinit) - name: gracefully stop the osds (sysvinit)
service: > service:
name=ceph name: ceph
state=restarted state: restarted
when: osdsysvinit.rc == 0 when: osdsysvinit.rc == 0
- name: Waiting for clean PGs... - name: waiting for clean pgs...
shell: > shell: |
test "$(ceph pg stat | sed 's/^.*pgs://;s/active+clean.*//;s/ //')" -eq "$(ceph pg stat | sed 's/pgs.*//;s/^.*://;s/ //')" && ceph health | egrep -sq "HEALTH_OK|HEALTH_WARN" test "$(ceph pg stat | sed 's/^.*pgs://;s/active+clean.*//;s/ //')" -eq "$(ceph pg stat | sed 's/pgs.*//;s/^.*://;s/ //')" && ceph health | egrep -sq "HEALTH_OK|HEALTH_WARN"
register: result register: result
until: result.rc == 0 until: result.rc == 0
@ -131,7 +156,7 @@
delay: 10 delay: 10
delegate_to: "{{ groups.mons[0] }}" delegate_to: "{{ groups.mons[0] }}"
- name: Unset OSD flags - name: unset osd flags
command: ceph osd unset {{ item }} command: ceph osd unset {{ item }}
with_items: with_items:
- noout - noout
@ -142,45 +167,47 @@
- hosts: mdss - hosts: mdss
serial: 1 serial: 1
sudo: True become: True
vars: vars:
upgrade_ceph_packages: True upgrade_ceph_packages: True
mds_group_name: mdss
roles: roles:
- ceph-common - ceph-common
- ceph-mds - ceph-mds
post_tasks: post_tasks:
- name: Check if sysvinit - name: check if sysvinit
stat: > stat:
path=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}/sysvinit path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/sysvinit
register: mdssysvinit register: mdssysvinit
- name: Check if upstart - name: check if upstart
stat: > stat:
path=/var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart path: /var/lib/ceph/mon/ceph-{{ ansible_hostname }}/upstart
register: mdsupstart register: mdsupstart
- name: Restart the metadata server (Upstart) - name: restart the metadata server (upstart)
service: > service:
name=ceph-mds name: ceph-mds
state=restarted state: restarted
args=id={{ ansible_hostname }} args: id={{ ansible_hostname }}
when: mdsupstart.stat.exists == True when: mdsupstart.stat.exists == True
- name: Restart the metadata server (Sysvinit) - name: restart the metadata server (sysvinit)
service: > service:
name=ceph name: ceph
state=restarted state: restarted
args=mds args: mds
when: mdssysvinit.stat.exists == True when: mdssysvinit.stat.exists == True
- hosts: rgws - hosts: rgws
serial: 1 serial: 1
sudo: True become: True
vars: vars:
upgrade_ceph_packages: True upgrade_ceph_packages: True
rgw_group_name: rgws
roles: roles:
- ceph-common - ceph-common
@ -188,17 +215,17 @@
post_tasks: post_tasks:
- name: restart rados gateway server(s) - name: restart rados gateway server(s)
service: > service:
name={{ item }} name: {{ item }}
state=restarted state: restarted
with_items: with_items:
- radosgw - radosgw
when: radosgw_frontend == 'civetweb' when: radosgw_frontend == 'civetweb'
- name: restart rados gateway server(s) - name: restart rados gateway server(s)
service: > service:
name={{ item }} name: {{ item }}
state=restarted state: restarted
with_items: with_items:
- apache2 - apache2
- radosgw - radosgw