From 42ffe6301787571b5689d1bac3bdf8eaebf941ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Tue, 4 Apr 2017 10:33:22 +0200 Subject: [PATCH] osd: autodiscovery mode, use holders to detect device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As reported in https://github.com/ceph/ceph-ansible/issues/1403 when devices are held by lvm and `osd_auto_discovery` is set to true, it's not enough to check for a partition count = 0 since Ansible does not report. This patch also looks for 'holders' which in a case of lvm corresponds to the name of the pv. Now we also look for holders = 0. Fixes: #1403 Signed-off-by: Sébastien Han --- roles/ceph-osd/tasks/activate_osds.yml | 2 ++ roles/ceph-osd/tasks/check_devices_auto.yml | 2 ++ roles/ceph-osd/tasks/scenarios/bluestore.yml | 1 + roles/ceph-osd/tasks/scenarios/dmcrypt-journal-collocation.yml | 1 + roles/ceph-osd/tasks/scenarios/journal_collocation.yml | 1 + 5 files changed, 7 insertions(+) diff --git a/roles/ceph-osd/tasks/activate_osds.yml b/roles/ceph-osd/tasks/activate_osds.yml index 4e8dd1aae..f35bea199 100644 --- a/roles/ceph-osd/tasks/activate_osds.yml +++ b/roles/ceph-osd/tasks/activate_osds.yml @@ -10,6 +10,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - journal_collocation - osd_auto_discovery @@ -35,6 +36,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - osd_auto_discovery - dmcrypt_journal_collocation diff --git a/roles/ceph-osd/tasks/check_devices_auto.yml b/roles/ceph-osd/tasks/check_devices_auto.yml index 19d82ba75..889239727 100644 --- a/roles/ceph-osd/tasks/check_devices_auto.yml +++ b/roles/ceph-osd/tasks/check_devices_auto.yml @@ -21,6 +21,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - name: fix partitions gpt header or labels of the osd disks (autodiscover disks) shell: "sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}' || sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}'" @@ -32,6 +33,7 @@ - ansible_devices is defined - item.0.item.value.removable == "0" - item.0.item.value.partitions|count == 0 + - item.value.holders|count == 0 - item.0.rc != 0 - name: check if a partition named 'ceph' exists (autodiscover disks) diff --git a/roles/ceph-osd/tasks/scenarios/bluestore.yml b/roles/ceph-osd/tasks/scenarios/bluestore.yml index bf49d43f2..78897e288 100644 --- a/roles/ceph-osd/tasks/scenarios/bluestore.yml +++ b/roles/ceph-osd/tasks/scenarios/bluestore.yml @@ -17,6 +17,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - bluestore - osd_auto_discovery diff --git a/roles/ceph-osd/tasks/scenarios/dmcrypt-journal-collocation.yml b/roles/ceph-osd/tasks/scenarios/dmcrypt-journal-collocation.yml index cf656ed15..528856f5b 100644 --- a/roles/ceph-osd/tasks/scenarios/dmcrypt-journal-collocation.yml +++ b/roles/ceph-osd/tasks/scenarios/dmcrypt-journal-collocation.yml @@ -16,6 +16,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - dmcrypt_journal_collocation - osd_auto_discovery diff --git a/roles/ceph-osd/tasks/scenarios/journal_collocation.yml b/roles/ceph-osd/tasks/scenarios/journal_collocation.yml index 4ea5788f1..0e1d08a12 100644 --- a/roles/ceph-osd/tasks/scenarios/journal_collocation.yml +++ b/roles/ceph-osd/tasks/scenarios/journal_collocation.yml @@ -17,6 +17,7 @@ - ansible_devices is defined - item.value.removable == "0" - item.value.partitions|count == 0 + - item.value.holders|count == 0 - journal_collocation - osd_auto_discovery