mirror of https://github.com/ceph/ceph-ansible.git
54 lines
2.5 KiB
Django/Jinja
54 lines
2.5 KiB
Django/Jinja
#!/bin/bash
|
|
# {{ ansible_managed }}
|
|
|
|
if [[ "$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}* | wc -l)" -gt 0 ]] ; then
|
|
for part in /dev/${1}*; do
|
|
if [[ "$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID ${part} | wc -l)" -gt 0 ]]; then
|
|
DEVICES="${DEVICES} --device=/dev/disk/by-partuuid/$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID ${part}) "
|
|
fi
|
|
done
|
|
# we test if the dm exist, if it does we add it to --device list
|
|
# if not we don't add it, the first activation will fail
|
|
# however the dm will be created, on the second run it'll added to the device list
|
|
# the second run will succeed
|
|
blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}1
|
|
# make sure blkid returns 0 otherwise we will test /dev/mapper/ which always exists
|
|
if [[ -e /dev/mapper/$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}1) && "$?" -eq 0 ]]; then
|
|
DEVICES="${DEVICES} --device=/dev/disk/by-partuuid/$(blkid -t PARTLABEL="ceph lockbox" -o value -s PARTUUID /dev/${1}3) --device=/dev/${1}3 --device=/dev/mapper/control --device=/dev/mapper/$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}2) --device=/dev/mapper/$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}1)"
|
|
else
|
|
DEVICES="${DEVICES} --device=/dev/disk/by-partuuid/$(blkid -t PARTLABEL="ceph lockbox" -o value -s PARTUUID /dev/${1}3) --device=/dev/${1}3 --device=/dev/mapper/control --device=/dev/mapper/$(blkid -t TYPE=crypto_LUKS -o value -s PARTUUID /dev/${1}2)"
|
|
fi
|
|
fi
|
|
|
|
/usr/bin/docker run \
|
|
--rm \
|
|
--net=host \
|
|
--cap-add SYS_ADMIN \
|
|
{% if ansible_distribution == 'Ubuntu' -%}
|
|
--security-opt apparmor:unconfined \
|
|
{% endif -%}
|
|
--pid=host \
|
|
{% if not containerized_deployment_with_kv -%}
|
|
-v /var/lib/ceph:/var/lib/ceph \
|
|
-v /etc/ceph:/etc/ceph \
|
|
{% else -%}
|
|
-e KV_TYPE={{kv_type}} \
|
|
-e KV_IP={{kv_endpoint}} \
|
|
-e KV_PORT={{kv_port}} \
|
|
{% endif -%}
|
|
-v /etc/localtime:/etc/localtime:ro \
|
|
--device=/dev/${1} \
|
|
--device=/dev/${1}1 \
|
|
{% if raw_journal_devices|length > 0 -%}
|
|
-e OSD_JOURNAL={{ raw_journal_devices[0] }} \
|
|
--device={{ raw_journal_devices[0] }} \
|
|
{% else -%}
|
|
--device=/dev/${1}2 \
|
|
{% endif -%}
|
|
--device=/dev/disk/by-partuuid/$(python -c "import uuid; f = open('/etc/machine-id', 'r').read(); print uuid.uuid5(uuid.NAMESPACE_DNS, f.strip() + '/dev/$1')") ${DEVICES} \
|
|
-e CEPH_DAEMON=OSD_CEPH_DISK_ACTIVATE \
|
|
-e OSD_DEVICE=/dev/${1} \
|
|
{{ ceph_osd_docker_extra_env }} \
|
|
--name=ceph-osd-{{ ansible_hostname }}-dev${1} \
|
|
{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}
|