Use -L with chown and set crush map tunables when upgrading Ceph
authorGiulio Fidente <gfidente@redhat.com>
Wed, 28 Sep 2016 13:05:14 +0000 (15:05 +0200)
committerGiulio Fidente <gfidente@redhat.com>
Thu, 29 Sep 2016 11:35:05 +0000 (13:35 +0200)
Previously the chown command wasn't traversing symlinks, causing
the new ownership to not be set for some needed files.

This change also ensures the crush map tunables are set to the 'default'
profile after the upgrade.

Finally redirects the output of a pidof to /dev/null to avoid spurious
logging.

Change-Id: Id4865ffff207edfc727d729f9cc04e6e81ad19d8

extraconfig/tasks/major_upgrade_ceph_mon.sh
extraconfig/tasks/major_upgrade_ceph_storage.sh

index b633e65..e0d160f 100755 (executable)
@@ -5,7 +5,7 @@ set -o pipefail
 echo INFO: starting $(basename "$0")
 
 # Exit if not running
-if ! pidof ceph-mon; then
+if ! pidof ceph-mon &> /dev/null; then
     echo INFO: ceph-mon is not running, skipping
     exit 0
 fi
@@ -54,7 +54,7 @@ if [[ "$UPDATED_VERSION" =~ ^0\.94.* ]]; then
 elif [[ "$UPDATED_VERSION" =~ ^10\.2.* ]]; then
     # RPM could own some of these but we can't take risks on the pre-existing files
     for d in /var/lib/ceph/mon /var/log/ceph /var/run/ceph /etc/ceph; do
-        chown -R ceph:ceph $d || echo WARNING: chown of $d failed
+        chown -L -R ceph:ceph $d || echo WARNING: chown of $d failed
     done
 
     # Replay udev events with newer rules
@@ -71,6 +71,10 @@ elif [[ "$UPDATED_VERSION" =~ ^10\.2.* ]]; then
       sleep 10;
     done"
 
+    # if tunables become legacy, cluster status will be HEALTH_WARN causing
+    # upgrade to fail on following node
+    ceph osd crush tunables default
+
     echo INFO: Ceph was upgraded to Jewel
 else
     echo ERROR: Ceph was upgraded to an unknown release, daemon is stopped, need manual intervention
index dc80a72..705e84e 100644 (file)
@@ -18,7 +18,7 @@ set -eu
 echo INFO: starting $(basename "$0")
 
 # Exit if not running
-if ! pidof ceph-osd; then
+if ! pidof ceph-osd &> /dev/null; then
     echo INFO: ceph-osd is not running, skipping
     exit 0
 fi
@@ -63,7 +63,7 @@ if [[ "$UPDATED_VERSION" =~ ^0\.94.* ]]; then
 elif [[ "$UPDATED_VERSION" =~ ^10\.2.* ]]; then
     # RPM could own some of these but we can't take risks on the pre-existing files
     for d in /var/lib/ceph/osd /var/log/ceph /var/run/ceph /etc/ceph; do
-        chown -R ceph:ceph $d || echo WARNING: chown of $d failed
+        chown -L -R ceph:ceph $d || echo WARNING: chown of $d failed
     done
 
     # Replay udev events with newer rules