From fdf924401f8d6502f849068cc7f47a348fd7d87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Tue, 12 Sep 2017 15:31:19 -0600 Subject: [PATCH] osd: drop support for device partition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We have been struggling with this, it's still broken and breaking other things too now. Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1490283 Signed-off-by: Sébastien Han --- roles/ceph-osd/tasks/activate_osds.yml | 21 ++++++------------- roles/ceph-osd/tasks/check_devices.yml | 16 +++----------- roles/ceph-osd/tasks/check_devices_static.yml | 20 ++++-------------- roles/ceph-osd/tasks/scenarios/collocated.yml | 12 +++-------- .../tasks/scenarios/non-collocated.yml | 18 ++++++++-------- .../centos/7/bluestore/group_vars/all | 4 +++- .../centos/7/bs-crypt-ded-jrn/group_vars/all | 4 +++- .../centos/7/bs-dock-ded-jrn/group_vars/all | 4 +++- .../centos/7/cluster/group_vars/all | 4 +++- .../centos/7/crypt-ded-jrn/group_vars/all | 4 +++- .../centos/7/docker-ded-jrn/group_vars/all | 4 +++- .../ubuntu/16.04/cluster/group_vars/all | 2 ++ 12 files changed, 45 insertions(+), 68 deletions(-) diff --git a/roles/ceph-osd/tasks/activate_osds.yml b/roles/ceph-osd/tasks/activate_osds.yml index 13a53e0fd..381048a2c 100644 --- a/roles/ceph-osd/tasks/activate_osds.yml +++ b/roles/ceph-osd/tasks/activate_osds.yml @@ -3,29 +3,23 @@ # partition. - name: activate osd(s) when device is a disk - command: ceph-disk activate {{ item.1 | regex_replace('^(\/dev\/cciss\/c[0-9]{1}d[0-9]{1})$', '\\1p') }}1 - with_together: - - "{{ ispartition_results.results }}" + command: ceph-disk activate {{ item | regex_replace('^(\/dev\/cciss\/c[0-9]{1}d[0-9]{1})$', '\\1p') }}1 + with_items: - "{{ devices|unique }}" changed_when: false failed_when: false register: activate_osd_disk when: - - not item.0.get("skipped") - - item.0.get("rc", 0) != "0" - not osd_auto_discovery - name: activate osd(s) when device is a disk (dmcrypt) - command: ceph-disk activate --dmcrypt {{ item.1 | regex_replace('^(\/dev\/cciss\/c[0-9]{1}d[0-9]{1})$', '\\1p') }}1 - with_together: - - "{{ ispartition_results.results }}" + command: ceph-disk activate --dmcrypt {{ item | regex_replace('^(\/dev\/cciss\/c[0-9]{1}d[0-9]{1})$', '\\1p') }}1 + with_items: - "{{ devices|unique }}" changed_when: false failed_when: false register: activate_osd_disk_dmcrypt when: - - not item.0.get("skipped") - - item.0.get("rc", 0) != "0" - not osd_auto_discovery - dmcrypt @@ -44,13 +38,10 @@ # NOTE (leseb): this task is for partitions because we don't explicitly use a partition. - name: activate osd(s) when device is a partition - command: "ceph-disk activate {{ item.1 }}" - with_together: - - "{{ ispartition_results.results }}" + command: "ceph-disk activate {{ item }}" + with_items: - "{{ devices|unique }}" changed_when: false failed_when: false when: - - not item.0.get("skipped") - - item.0.get("rc", 0) == "0" - not osd_auto_discovery diff --git a/roles/ceph-osd/tasks/check_devices.yml b/roles/ceph-osd/tasks/check_devices.yml index c6833e1fb..ea2455fce 100644 --- a/roles/ceph-osd/tasks/check_devices.yml +++ b/roles/ceph-osd/tasks/check_devices.yml @@ -14,25 +14,15 @@ # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) static: False -- name: check the journal device is partition - shell: "readlink -f {{ item }} | egrep '/dev/([hsv]d[a-z]{1,2}|cciss/c[0-9]d[0-9]p|nvme[0-9]n[0-9]p)[0-9]{1,2}|fio[a-z]{1,2}[0-9]{1,2}$'" - with_items: "{{ dedicated_devices }}" - changed_when: false - failed_when: false - always_run: true - register: journal_ispartition_results - - name: check the partition status of the journal devices - shell: "parted --script {{ item.1 }} print > /dev/null 2>&1" - with_together: - - "{{ journal_ispartition_results.results }}" + command: "parted --script {{ item }} print" + with_items: - "{{ dedicated_devices|unique }}" changed_when: false failed_when: false always_run: true register: journal_partition_status when: - - item.0.rc != 0 - osd_scenario == 'non-collocated' - name: fix partitions gpt header or labels of the journal device(s) @@ -50,7 +40,7 @@ - name: create gpt disk label of the journal device(s) command: parted --script {{ item.1 }} mklabel gpt with_together: - - "{{ osd_partition_status_results.results }}" + - "{{ journal_partition_status.results }}" - "{{ dedicated_devices|unique }}" changed_when: false when: diff --git a/roles/ceph-osd/tasks/check_devices_static.yml b/roles/ceph-osd/tasks/check_devices_static.yml index 9d82ce335..eb1d12ff3 100644 --- a/roles/ceph-osd/tasks/check_devices_static.yml +++ b/roles/ceph-osd/tasks/check_devices_static.yml @@ -1,22 +1,12 @@ --- -- name: check if the device is a partition - shell: "readlink -f {{ item }} | egrep '/dev/([hsv]d[a-z]{1,2}|cciss/c[0-9]d[0-9]p|nvme[0-9]n[0-9]p)[0-9]{1,2}|fio[a-z]{1,2}[0-9]{1,2}$'" - with_items: "{{ devices }}" - changed_when: false - failed_when: false - always_run: true - register: ispartition_results - - name: check the partition status of the osd disks - shell: "parted --script {{ item.1 }} print > /dev/null 2>&1" - with_together: - - "{{ ispartition_results.results }}" + command: "parted --script {{ item }} print" + with_items: - "{{ devices }}" changed_when: false failed_when: false always_run: true register: osd_partition_status_results - when: item.0.rc != 0 # NOTE: The following calls to sgdisk are retried because sgdisk is known to # fully wipe a device the first time around. There is no need to halt execution @@ -46,12 +36,10 @@ - containerized_deployment - name: check if a partition named 'ceph' exists - shell: "parted --script {{ item.1 }} print | egrep -sq '^ 1.*ceph'" - with_together: - - "{{ ispartition_results.results }}" + shell: "parted --script {{ item }} print | egrep -sq '^ 1.*ceph'" + with_items: - "{{ devices }}" changed_when: false failed_when: false always_run: true register: parted_results - when: item.0.rc != 0 diff --git a/roles/ceph-osd/tasks/scenarios/collocated.yml b/roles/ceph-osd/tasks/scenarios/collocated.yml index f62f83ac8..639851507 100644 --- a/roles/ceph-osd/tasks/scenarios/collocated.yml +++ b/roles/ceph-osd/tasks/scenarios/collocated.yml @@ -7,26 +7,23 @@ docker run --net=host \ --pid=host \ --privileged=true \ - --name=ceph-osd-prepare-{{ ansible_hostname }}-dev{{ item.2 | regex_replace('/', '') }} \ + --name=ceph-osd-prepare-{{ ansible_hostname }}-dev{{ item.1 | regex_replace('/', '') }} \ -v /etc/ceph:/etc/ceph \ -v /var/lib/ceph/:/var/lib/ceph/ \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -e CLUSTER={{ cluster }} \ -e CEPH_DAEMON=OSD_CEPH_DISK_PREPARE \ - -e OSD_DEVICE={{ item.2 }} \ + -e OSD_DEVICE={{ item.1 }} \ {{ docker_env_args }} \ {{ ceph_osd_docker_prepare_env }} \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} with_together: - "{{ parted_results.results | default([]) }}" - - "{{ ispartition_results.results | default([]) }}" - "{{ devices }}" when: - not item.0.get("skipped") - - not item.1.get("skipped") - item.0.get("rc", 0) != 0 - - item.1.get("rc", 0) != 0 - not osd_auto_discovery - containerized_deployment @@ -56,16 +53,13 @@ - containerized_deployment - name: manually prepare ceph "{{ osd_objectstore }}" non-containerized osd disk(s) with collocated osd data and journal - command: "ceph-disk prepare {{ ceph_disk_cli_options }} {{ item.2 }}" + command: "ceph-disk prepare {{ ceph_disk_cli_options }} {{ item.1 }}" with_together: - "{{ parted_results.results | default([]) }}" - - "{{ ispartition_results.results | default([]) }}" - "{{ devices }}" when: - not item.0.get("skipped") - - not item.1.get("skipped") - item.0.get("rc", 0) != 0 - - item.1.get("rc", 0) != 0 - not containerized_deployment - include: ../activate_osds.yml diff --git a/roles/ceph-osd/tasks/scenarios/non-collocated.yml b/roles/ceph-osd/tasks/scenarios/non-collocated.yml index 9a744300c..49b76002b 100644 --- a/roles/ceph-osd/tasks/scenarios/non-collocated.yml +++ b/roles/ceph-osd/tasks/scenarios/non-collocated.yml @@ -20,11 +20,12 @@ {{ ceph_osd_docker_prepare_env }} \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} with_together: - - "{{ parted_results.results }}" + - "{{ parted_results.results | default([]) }}" - "{{ devices }}" - "{{ dedicated_devices }}" when: - not item.0.get("skipped") + - item.0.get("rc", 0) != 0 - not osd_auto_discovery - containerized_deployment - osd_objectstore == 'filestore' @@ -48,35 +49,34 @@ {{ ceph_osd_docker_prepare_env }} \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} with_together: - - "{{ parted_results.results }}" + - "{{ parted_results.results | default([]) }}" - "{{ devices }}" - "{{ dedicated_devices }}" - "{{ bluestore_wal_devices }}" when: - not item.0.get("skipped") + - item.0.get("rc", 0) != 0 - not osd_auto_discovery - containerized_deployment - osd_objectstore == 'bluestore' - name: prepare ceph "{{ osd_objectstore }}" non-containerized osd disk(s) non-collocated - command: "ceph-disk prepare {{ ceph_disk_cli_options }} {{ item.2 }} {{ item.3 }}" + command: "ceph-disk prepare {{ ceph_disk_cli_options }} {{ item.1 }} {{ item.2 }}" with_together: - - "{{ parted_results.results }}" - - "{{ ispartition_results.results }}" + - "{{ parted_results.results | default([]) }}" - "{{ devices }}" - "{{ dedicated_devices }}" changed_when: false when: - - item.0.get("skipped") or item.0.get("rc", 0) != 0 - - not item.1.get("skipped") - - item.1.get("rc", 0) != 0 + - not item.0.get("skipped") + - item.0.get("rc", 0) != 0 - osd_objectstore == 'filestore' - not containerized_deployment - name: manually prepare ceph "{{ osd_objectstore }}" non-containerized osd disk(s) with a dedicated device for db and wal command: "ceph-disk prepare {{ ceph_disk_cli_options }} --block.db {{ item.1 }} --block.wal {{ item.2 }} {{ item.3 }}" with_together: - - "{{ parted_results.results }}" + - "{{ parted_results.results | default([]) }}" - "{{ dedicated_devices }}" - "{{ bluestore_wal_devices }}" - "{{ devices }}" diff --git a/tests/functional/centos/7/bluestore/group_vars/all b/tests/functional/centos/7/bluestore/group_vars/all index 24be5a99c..f500d0bbe 100644 --- a/tests/functional/centos/7/bluestore/group_vars/all +++ b/tests/functional/centos/7/bluestore/group_vars/all @@ -11,8 +11,10 @@ journal_size: 100 osd_objectstore: "bluestore" devices: - '/dev/sda' -dedicated_devices: - '/dev/sdb' +dedicated_devices: + - '/dev/sdc' + - '/dev/sdc' osd_scenario: non-collocated os_tuning_params: - { name: kernel.pid_max, value: 4194303 } diff --git a/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all b/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all index d533b666c..0b1b2dad4 100644 --- a/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all @@ -12,8 +12,10 @@ dmcrypt: true osd_objectstore: "bluestore" devices: - '/dev/sda' -dedicated_devices: - '/dev/sdb' +dedicated_devices: + - '/dev/sdc' + - '/dev/sdc' os_tuning_params: - { name: kernel.pid_max, value: 4194303 } - { name: fs.file-max, value: 26234859 } diff --git a/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all b/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all index e5a7a962c..9cd8f0030 100644 --- a/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all @@ -17,7 +17,9 @@ osd_scenario: non-collocated osd_objectstore: bluestore devices: - /dev/sda -dedicated_devices: - /dev/sdb +dedicated_devices: + - /dev/sdc + - /dev/sdc ceph_osd_docker_prepare_env: -e OSD_FORCE_ZAP=1 ceph_osd_docker_run_script_path: /var/tmp diff --git a/tests/functional/centos/7/cluster/group_vars/all b/tests/functional/centos/7/cluster/group_vars/all index 1d581d847..a581e8042 100644 --- a/tests/functional/centos/7/cluster/group_vars/all +++ b/tests/functional/centos/7/cluster/group_vars/all @@ -10,8 +10,10 @@ radosgw_interface: eth1 osd_objectstore: filestore devices: - '/dev/sda' -dedicated_devices: - '/dev/sdb' +dedicated_devices: + - '/dev/sdc' + - '/dev/sdc' osd_scenario: non-collocated os_tuning_params: - { name: kernel.pid_max, value: 4194303 } diff --git a/tests/functional/centos/7/crypt-ded-jrn/group_vars/all b/tests/functional/centos/7/crypt-ded-jrn/group_vars/all index 964f3004b..1d56e1341 100644 --- a/tests/functional/centos/7/crypt-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/crypt-ded-jrn/group_vars/all @@ -12,8 +12,10 @@ dmcrypt: true osd_objectstore: filestore devices: - '/dev/sda' -dedicated_devices: - '/dev/sdb' +dedicated_devices: + - '/dev/sdc' + - '/dev/sdc' os_tuning_params: - { name: kernel.pid_max, value: 4194303 } - { name: fs.file-max, value: 26234859 } diff --git a/tests/functional/centos/7/docker-ded-jrn/group_vars/all b/tests/functional/centos/7/docker-ded-jrn/group_vars/all index d37dc6fc8..1c1ebc553 100644 --- a/tests/functional/centos/7/docker-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/docker-ded-jrn/group_vars/all @@ -17,7 +17,9 @@ osd_objectstore: filestore osd_scenario: non-collocated devices: - /dev/sda -dedicated_devices: - /dev/sdb +dedicated_devices: + - /dev/sdc + - /dev/sdc ceph_osd_docker_prepare_env: -e OSD_JOURNAL_SIZE={{ journal_size }} -e OSD_FORCE_ZAP=1 ceph_osd_docker_run_script_path: /var/tmp diff --git a/tests/functional/ubuntu/16.04/cluster/group_vars/all b/tests/functional/ubuntu/16.04/cluster/group_vars/all index b4326d2fe..593e6c987 100644 --- a/tests/functional/ubuntu/16.04/cluster/group_vars/all +++ b/tests/functional/ubuntu/16.04/cluster/group_vars/all @@ -9,9 +9,11 @@ monitor_interface: eth1 radosgw_interface: eth1 journal_size: 100 devices: + - '/dev/sda' - '/dev/sdb' dedicated_devices: - '/dev/sdc' + - '/dev/sdc' osd_scenario: non-collocated os_tuning_params: - { name: kernel.pid_max, value: 4194303 }