#!/bin/bash # {{ ansible_managed }} ############# # FUNCTIONS # ############# 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} } expose_partitions "$1" ######## # MAIN # ######## /usr/bin/docker run \ --rm \ --net=host \ --privileged=true \ --pid=host \ --memory={{ ceph_osd_docker_memory_limit }} \ {% if docker_version.split('.')[0] | version_compare('13', '>=') -%} --cpus={{ ceph_osd_docker_cpu_limit }} \ {% else -%} --cpu-quota={{ ceph_osd_docker_cpu_limit * 100000 }} \ {% endif -%} -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /run/udev:/run/udev:ro \ -v /var/lib/ceph:/var/lib/ceph \ -v /etc/ceph:/etc/ceph \ $DOCKER_ENV \ {% if ansible_distribution == 'Ubuntu' -%} --security-opt apparmor:unconfined \ {% endif -%} {% if not containerized_deployment_with_kv -%} {% else -%} -e KV_TYPE={{ kv_type }} \ -e KV_IP={{ kv_endpoint }} \ -e KV_PORT={{ kv_port }} \ {% endif -%} {% if osd_objectstore == 'filestore' and not dmcrypt -%} -e OSD_FILESTORE=1 \ -e OSD_DMCRYPT=0 \ {% endif -%} {% if osd_objectstore == 'filestore' and dmcrypt -%} -e OSD_FILESTORE=1 \ -e OSD_DMCRYPT=1 \ {% endif -%} {% if osd_objectstore == 'bluestore' and not dmcrypt -%} -e OSD_BLUESTORE=1 \ -e OSD_DMCRYPT=0 \ {% endif -%} {% if osd_objectstore == 'bluestore' and dmcrypt -%} -e OSD_BLUESTORE=1 \ -e OSD_DMCRYPT=1 \ {% endif -%} -e CLUSTER={{ cluster }} \ -e OSD_DEVICE=/dev/${1} \ -e CEPH_DAEMON=OSD_CEPH_DISK_ACTIVATE \ {{ ceph_osd_docker_extra_env }} \ --name=ceph-osd-{{ ansible_hostname }}-${1} \ {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}