Fix the 'unless' condition of ceph-osd-prepare in osd puppet
In the 'unless' condition of ceph-prepare-osd-* there will be a false positive if an exception occurs when running ceph-disk, causing the osd to be formatted. To fix this, the contents of the unless block were moved to the command block and the execution of the binary (ceph-disk) was isolated. Test Plan: PASS: Fresh install (AIO-SX) PASS: Force exception in ceph-disk PASS: Lock/Unlock the controller PASS: Check if the osd has been wiped Closes-bug: 2033552 Change-Id: I5374bc228eebabf4794e1ce302690dec258d6c2f Signed-off-by: Erickson Silva <Erickson.SilvadeOliveira@windriver.com>
This commit is contained in:
parent
a140a14ee4
commit
a88028e180
@ -0,0 +1,73 @@
|
||||
From 6de75db12990a77b167f2957fef99bae76ed04f6 Mon Sep 17 00:00:00 2001
|
||||
From: Erickson Silva <Erickson.SilvadeOliveira@windriver.com>
|
||||
Date: Fri, 11 Aug 2023 10:29:02 -0300
|
||||
Subject: [PATCH] Fix the 'unless' condition of ceph-osd-prepare
|
||||
|
||||
In the 'unless' condition of ceph-prepare-osd-* there will be
|
||||
a false positive if an exception occurs when running ceph-disk,
|
||||
causing the osd to be formatted.
|
||||
|
||||
To fix this, the contents of the unless block were moved to the
|
||||
command block and the execution of the binary (ceph-disk) was
|
||||
isolated.
|
||||
|
||||
Signed-off-by: Erickson Silva <Erickson.SilvadeOliveira@windriver.com>
|
||||
---
|
||||
manifests/osd.pp | 32 +++++++++++++++-----------------
|
||||
1 file changed, 15 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/manifests/osd.pp b/manifests/osd.pp
|
||||
index 5353f58..5851676 100644
|
||||
--- a/manifests/osd.pp
|
||||
+++ b/manifests/osd.pp
|
||||
@@ -135,10 +135,24 @@ test -z $(ceph-disk list $(readlink -f ${data}) | egrep -o '[0-9a-f]{8}-([0-9a-f
|
||||
Exec[$ceph_check_udev] -> Exec[$ceph_prepare]
|
||||
# ceph-disk: prepare should be idempotent http://tracker.ceph.com/issues/7475
|
||||
exec { $ceph_prepare:
|
||||
-
|
||||
+ # We don't want to erase the disk if:
|
||||
+ # 1. There is already ceph data on the disk for our cluster AND
|
||||
+ # 2. The uuid for the OSD we are configuring matches the uuid for the
|
||||
+ # OSD on the disk. We don't want to attempt to re-use an OSD that
|
||||
+ # had previously been deleted.
|
||||
command => "/bin/true # comment to satisfy puppet syntax requirements
|
||||
set -ex
|
||||
disk=$(readlink -f ${data})
|
||||
+# If disk is multipath, must add partition number at the end of string.
|
||||
+if [[ \${disk} == *dm-* ]]; then
|
||||
+ ceph_part=${data}-part1
|
||||
+else
|
||||
+ ceph_part=${data}
|
||||
+fi
|
||||
+ceph_disk_output=$(/usr/sbin/ceph-disk list)
|
||||
+if echo \${ceph_disk_output} | grep -v 'unknown cluster' | grep \" *$(readlink -f \${ceph_part}).*ceph data\" | grep -v unprepared | grep 'osd uuid ${uuid}'; then
|
||||
+ exit 0
|
||||
+fi
|
||||
ceph-disk --verbose --log-stdout prepare --filestore ${cluster_uuid_option} ${uuid_option} ${osdid_option} --fs-type xfs --zap-disk \${disk} $(readlink -f ${journal})
|
||||
mkdir -p /var/lib/ceph/osd/ceph-${osdid}
|
||||
ceph auth del osd.${osdid} || true
|
||||
@@ -154,22 +168,6 @@ mount $(readlink -f \${part}) /var/lib/ceph/osd/ceph-${osdid}
|
||||
ceph-osd --id ${osdid} --mkfs --mkkey --mkjournal
|
||||
ceph auth add osd.${osdid} osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-${osdid}/keyring
|
||||
umount /var/lib/ceph/osd/ceph-${osdid}
|
||||
-",
|
||||
- # We don't want to erase the disk if:
|
||||
- # 1. There is already ceph data on the disk for our cluster AND
|
||||
- # 2. The uuid for the OSD we are configuring matches the uuid for the
|
||||
- # OSD on the disk. We don't want to attempt to re-use an OSD that
|
||||
- # had previously been deleted.
|
||||
- unless => "/bin/true # comment to satisfy puppet syntax requirements
|
||||
-set -e
|
||||
-disk=$(readlink -f ${data})
|
||||
-# If disk is multipath, must add partition number at the end of string.
|
||||
-if [[ \${disk} == *dm-* ]]; then
|
||||
- ceph_part=${data}-part1
|
||||
-else
|
||||
- ceph_part=${data}
|
||||
-fi
|
||||
-/usr/sbin/ceph-disk list | grep -v 'unknown cluster' | grep \" *$(readlink -f \${ceph_part}).*ceph data\" | grep -v unprepared | grep 'osd uuid ${uuid}'
|
||||
",
|
||||
logoutput => true,
|
||||
timeout => $exec_timeout,
|
||||
--
|
||||
2.25.1
|
@ -11,3 +11,4 @@
|
||||
0012-Add-multipath-disk-support.patch
|
||||
0013-Fix-puppet-ceph-multipath-ceph-partition-detection.patch
|
||||
0014-Adjust-puppet-ceph-dependency-requirements.patch
|
||||
0015-Fix-the-unless-condition-of-ceph-osd-prepare.patch
|
||||
|
Loading…
Reference in New Issue
Block a user