when:
- ceph_docker_on_openstack
+- name: test if the container image has the disk_list function
+ command: docker run --entrypoint=stat {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list.sh
+ changed_when: false
+ failed_when: false
+ register: disk_list
+ when:
+ - ceph_release_num[ceph_release] < ceph_release_num.kraken
+
- name: generate ceph osd docker run script
become: true
template:
#############
# FUNCTIONS #
#############
-
-
+{% if disk_list.get("rc", 1) == 0 -%}
function expose_partitions () {
DOCKER_ENV=$(docker run --name expose_partitions_${1} --privileged=true -v /dev/:/dev/ -v /etc/ceph:/etc/ceph -e CLUSTER={{ cluster }} -e OSD_DEVICE=/dev/${1} {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} disk_list)
docker rm -f expose_partitions_${1}
}
+{% else -%}
+# NOTE(leseb): maintains backwards compatibility with old ceph-docker Jewel images
+# Jewel images prior to https://github.com/ceph/ceph-docker/pull/797
+REGEX="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
+function expose_partitions {
+ local partition
+ if docker logs ceph-osd-prepare-{{ ansible_hostname }}-devdev${1} |& grep -Eo "$partition is GPT partition"; then
+ part=$(docker logs ceph-osd-prepare-{{ ansible_hostname }}-devdev${1} |& grep "$partition is GPT partition" | grep -Eo /dev/disk/by-partuuid/${REGEX} | uniq)
+ DOCKER_ENV="$DOCKER_ENV -e OSD_JOURNAL=$part"
+ fi
+}
+{% endif -%}
expose_partitions "$1"