| 1 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,75 +0,0 @@ |
| 1 |
-# ceph.sh - DevStack extras script to install Ceph |
|
| 2 |
- |
|
| 3 |
-if is_service_enabled ceph; then |
|
| 4 |
- if [[ "$1" == "source" ]]; then |
|
| 5 |
- # Initial source |
|
| 6 |
- source $TOP_DIR/lib/ceph |
|
| 7 |
- elif [[ "$1" == "stack" && "$2" == "pre-install" ]]; then |
|
| 8 |
- echo_summary "Installing Ceph" |
|
| 9 |
- check_os_support_ceph |
|
| 10 |
- if [ "$REMOTE_CEPH" = "False" ]; then |
|
| 11 |
- install_ceph |
|
| 12 |
- echo_summary "Configuring Ceph" |
|
| 13 |
- configure_ceph |
|
| 14 |
- # NOTE (leseb): Do everything here because we need to have Ceph started before the main |
|
| 15 |
- # OpenStack components. Ceph OSD must start here otherwise we can't upload any images. |
|
| 16 |
- echo_summary "Initializing Ceph" |
|
| 17 |
- init_ceph |
|
| 18 |
- start_ceph |
|
| 19 |
- else |
|
| 20 |
- install_ceph_remote |
|
| 21 |
- fi |
|
| 22 |
- elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then |
|
| 23 |
- if is_service_enabled glance; then |
|
| 24 |
- echo_summary "Configuring Glance for Ceph" |
|
| 25 |
- configure_ceph_glance |
|
| 26 |
- fi |
|
| 27 |
- if is_service_enabled nova; then |
|
| 28 |
- echo_summary "Configuring Nova for Ceph" |
|
| 29 |
- configure_ceph_nova |
|
| 30 |
- fi |
|
| 31 |
- if is_service_enabled cinder; then |
|
| 32 |
- echo_summary "Configuring Cinder for Ceph" |
|
| 33 |
- configure_ceph_cinder |
|
| 34 |
- fi |
|
| 35 |
- if is_service_enabled n-cpu; then |
|
| 36 |
- # NOTE (leseb): the part below is a requirement to attach Ceph block devices |
|
| 37 |
- echo_summary "Configuring libvirt secret" |
|
| 38 |
- import_libvirt_secret_ceph |
|
| 39 |
- fi |
|
| 40 |
- |
|
| 41 |
- if [ "$REMOTE_CEPH" = "False" ]; then |
|
| 42 |
- if is_service_enabled glance; then |
|
| 43 |
- echo_summary "Configuring Glance for Ceph" |
|
| 44 |
- configure_ceph_embedded_glance |
|
| 45 |
- fi |
|
| 46 |
- if is_service_enabled nova; then |
|
| 47 |
- echo_summary "Configuring Nova for Ceph" |
|
| 48 |
- configure_ceph_embedded_nova |
|
| 49 |
- fi |
|
| 50 |
- if is_service_enabled cinder; then |
|
| 51 |
- echo_summary "Configuring Cinder for Ceph" |
|
| 52 |
- configure_ceph_embedded_cinder |
|
| 53 |
- fi |
|
| 54 |
- fi |
|
| 55 |
- fi |
|
| 56 |
- |
|
| 57 |
- if [[ "$1" == "unstack" ]]; then |
|
| 58 |
- if [ "$REMOTE_CEPH" = "True" ]; then |
|
| 59 |
- cleanup_ceph_remote |
|
| 60 |
- else |
|
| 61 |
- cleanup_ceph_embedded |
|
| 62 |
- stop_ceph |
|
| 63 |
- fi |
|
| 64 |
- cleanup_ceph_general |
|
| 65 |
- fi |
|
| 66 |
- |
|
| 67 |
- if [[ "$1" == "clean" ]]; then |
|
| 68 |
- if [ "$REMOTE_CEPH" = "True" ]; then |
|
| 69 |
- cleanup_ceph_remote |
|
| 70 |
- else |
|
| 71 |
- cleanup_ceph_embedded |
|
| 72 |
- fi |
|
| 73 |
- cleanup_ceph_general |
|
| 74 |
- fi |
|
| 75 |
-fi |
| ... | ... |
@@ -1880,7 +1880,7 @@ function run_phase {
|
| 1880 | 1880 |
# white listed elements in tree. We want these to move out |
| 1881 | 1881 |
# over time as well, but they are in tree, so we need to |
| 1882 | 1882 |
# manage that. |
| 1883 |
- local exceptions="60-ceph.sh 80-tempest.sh" |
|
| 1883 |
+ local exceptions="80-tempest.sh" |
|
| 1884 | 1884 |
local extra |
| 1885 | 1885 |
extra=$(basename $extra_plugin_file_name) |
| 1886 | 1886 |
if [[ ! ( $exceptions =~ "$extra" ) ]]; then |
| 1887 | 1887 |
deleted file mode 100644 |
| ... | ... |
@@ -1,381 +0,0 @@ |
| 1 |
-#!/bin/bash |
|
| 2 |
-# |
|
| 3 |
-# lib/ceph |
|
| 4 |
-# Functions to control the configuration and operation of the **Ceph** storage service |
|
| 5 |
- |
|
| 6 |
-# Dependencies: |
|
| 7 |
-# |
|
| 8 |
-# - ``functions`` file |
|
| 9 |
-# - ``CEPH_DATA_DIR`` or ``DATA_DIR`` must be defined |
|
| 10 |
- |
|
| 11 |
-# ``stack.sh`` calls the entry points in this order (via ``extras.d/60-ceph.sh``): |
|
| 12 |
-# |
|
| 13 |
-# - install_ceph |
|
| 14 |
-# - configure_ceph |
|
| 15 |
-# - init_ceph |
|
| 16 |
-# - start_ceph |
|
| 17 |
-# - stop_ceph |
|
| 18 |
-# - cleanup_ceph |
|
| 19 |
- |
|
| 20 |
-# Save trace setting |
|
| 21 |
-_XTRACE_LIB_CEPH=$(set +o | grep xtrace) |
|
| 22 |
-set +o xtrace |
|
| 23 |
- |
|
| 24 |
- |
|
| 25 |
-# Defaults |
|
| 26 |
-# -------- |
|
| 27 |
- |
|
| 28 |
-# Set ``CEPH_DATA_DIR`` to the location of Ceph drives and objects. |
|
| 29 |
-# Default is the common DevStack data directory. |
|
| 30 |
-CEPH_DATA_DIR=${CEPH_DATA_DIR:-/var/lib/ceph}
|
|
| 31 |
-CEPH_DISK_IMAGE=${CEPH_DATA_DIR}/drives/images/ceph.img
|
|
| 32 |
- |
|
| 33 |
-# Set ``CEPH_CONF_DIR`` to the location of the configuration files. |
|
| 34 |
-# Default is ``/etc/ceph``. |
|
| 35 |
-CEPH_CONF_DIR=${CEPH_CONF_DIR:-/etc/ceph}
|
|
| 36 |
- |
|
| 37 |
-# DevStack will create a loop-back disk formatted as XFS to store the |
|
| 38 |
-# Ceph data. Set ``CEPH_LOOPBACK_DISK_SIZE`` to the disk size in |
|
| 39 |
-# kilobytes. |
|
| 40 |
-# Default is 1 gigabyte. |
|
| 41 |
-CEPH_LOOPBACK_DISK_SIZE_DEFAULT=4G |
|
| 42 |
-CEPH_LOOPBACK_DISK_SIZE=${CEPH_LOOPBACK_DISK_SIZE:-$CEPH_LOOPBACK_DISK_SIZE_DEFAULT}
|
|
| 43 |
- |
|
| 44 |
-# Common |
|
| 45 |
-CEPH_FSID=$(uuidgen) |
|
| 46 |
-CEPH_CONF_FILE=${CEPH_CONF_DIR}/ceph.conf
|
|
| 47 |
- |
|
| 48 |
-# Glance |
|
| 49 |
-GLANCE_CEPH_USER=${GLANCE_CEPH_USER:-glance}
|
|
| 50 |
-GLANCE_CEPH_POOL=${GLANCE_CEPH_POOL:-images}
|
|
| 51 |
-GLANCE_CEPH_POOL_PG=${GLANCE_CEPH_POOL_PG:-8}
|
|
| 52 |
-GLANCE_CEPH_POOL_PGP=${GLANCE_CEPH_POOL_PGP:-8}
|
|
| 53 |
- |
|
| 54 |
-# Nova |
|
| 55 |
-NOVA_CEPH_POOL=${NOVA_CEPH_POOL:-vms}
|
|
| 56 |
-NOVA_CEPH_POOL_PG=${NOVA_CEPH_POOL_PG:-8}
|
|
| 57 |
-NOVA_CEPH_POOL_PGP=${NOVA_CEPH_POOL_PGP:-8}
|
|
| 58 |
- |
|
| 59 |
-# Cinder |
|
| 60 |
-CINDER_CEPH_POOL=${CINDER_CEPH_POOL:-volumes}
|
|
| 61 |
-CINDER_CEPH_POOL_PG=${CINDER_CEPH_POOL_PG:-8}
|
|
| 62 |
-CINDER_CEPH_POOL_PGP=${CINDER_CEPH_POOL_PGP:-8}
|
|
| 63 |
-CINDER_CEPH_USER=${CINDER_CEPH_USER:-cinder}
|
|
| 64 |
-CINDER_CEPH_UUID=${CINDER_CEPH_UUID:-$(uuidgen)}
|
|
| 65 |
- |
|
| 66 |
-# Set ``CEPH_REPLICAS`` to configure how many replicas are to be |
|
| 67 |
-# configured for your Ceph cluster. By default we are configuring |
|
| 68 |
-# only one replica since this is way less CPU and memory intensive. If |
|
| 69 |
-# you are planning to test Ceph replication feel free to increase this value |
|
| 70 |
-CEPH_REPLICAS=${CEPH_REPLICAS:-1}
|
|
| 71 |
-CEPH_REPLICAS_SEQ=$(seq ${CEPH_REPLICAS})
|
|
| 72 |
- |
|
| 73 |
-# Connect to an existing Ceph cluster |
|
| 74 |
-REMOTE_CEPH=$(trueorfalse False REMOTE_CEPH) |
|
| 75 |
-REMOTE_CEPH_ADMIN_KEY_PATH=${REMOTE_CEPH_ADMIN_KEY_PATH:-$CEPH_CONF_DIR/ceph.client.admin.keyring}
|
|
| 76 |
- |
|
| 77 |
-# Cinder encrypted volume tests are not supported with a Ceph backend due to |
|
| 78 |
-# bug 1463525. |
|
| 79 |
-ATTACH_ENCRYPTED_VOLUME_AVAILABLE=False |
|
| 80 |
- |
|
| 81 |
- |
|
| 82 |
-# Functions |
|
| 83 |
-# ------------ |
|
| 84 |
- |
|
| 85 |
-function get_ceph_version {
|
|
| 86 |
- local ceph_version_str |
|
| 87 |
- ceph_version_str=$(sudo ceph daemon mon.$(hostname) version | cut -d '"' -f 4 | cut -f 1,2 -d '.') |
|
| 88 |
- echo $ceph_version_str |
|
| 89 |
-} |
|
| 90 |
- |
|
| 91 |
-# import_libvirt_secret_ceph() - Imports Cinder user key into libvirt |
|
| 92 |
-# so it can connect to the Ceph cluster while attaching a Cinder block device |
|
| 93 |
-function import_libvirt_secret_ceph {
|
|
| 94 |
- cat > secret.xml <<EOF |
|
| 95 |
-<secret ephemeral='no' private='no'> |
|
| 96 |
- <uuid>${CINDER_CEPH_UUID}</uuid>
|
|
| 97 |
- <usage type='ceph'> |
|
| 98 |
- <name>client.${CINDER_CEPH_USER} secret</name>
|
|
| 99 |
- </usage> |
|
| 100 |
-</secret> |
|
| 101 |
-EOF |
|
| 102 |
- sudo virsh secret-define --file secret.xml |
|
| 103 |
- sudo virsh secret-set-value --secret ${CINDER_CEPH_UUID} --base64 $(sudo ceph -c ${CEPH_CONF_FILE} auth get-key client.${CINDER_CEPH_USER})
|
|
| 104 |
- sudo rm -f secret.xml |
|
| 105 |
-} |
|
| 106 |
- |
|
| 107 |
-# undefine_virsh_secret() - Undefine Cinder key secret from libvirt |
|
| 108 |
-function undefine_virsh_secret {
|
|
| 109 |
- if is_service_enabled cinder || is_service_enabled nova; then |
|
| 110 |
- local virsh_uuid |
|
| 111 |
- virsh_uuid=$(sudo virsh secret-list | awk '/^ ?[0-9a-z]/ { print $1 }')
|
|
| 112 |
- sudo virsh secret-undefine ${virsh_uuid} >/dev/null 2>&1
|
|
| 113 |
- fi |
|
| 114 |
-} |
|
| 115 |
- |
|
| 116 |
- |
|
| 117 |
-# check_os_support_ceph() - Check if the operating system provides a decent version of Ceph |
|
| 118 |
-function check_os_support_ceph {
|
|
| 119 |
- if [[ ! ${DISTRO} =~ (trusty|f23|f24) ]]; then
|
|
| 120 |
- echo "WARNING: your distro $DISTRO does not provide (at least) the Firefly release. Please use Ubuntu Trusty or Fedora 20 (and higher)" |
|
| 121 |
- if [[ "$FORCE_CEPH_INSTALL" != "yes" ]]; then |
|
| 122 |
- die $LINENO "If you wish to install Ceph on this distribution anyway run with FORCE_CEPH_INSTALL=yes" |
|
| 123 |
- fi |
|
| 124 |
- NO_UPDATE_REPOS=False |
|
| 125 |
- fi |
|
| 126 |
-} |
|
| 127 |
- |
|
| 128 |
-# cleanup_ceph() - Remove residual data files, anything left over from previous |
|
| 129 |
-# runs that a clean run would need to clean up |
|
| 130 |
-function cleanup_ceph_remote {
|
|
| 131 |
- # do a proper cleanup from here to avoid leftover on the remote Ceph cluster |
|
| 132 |
- if is_service_enabled glance; then |
|
| 133 |
- sudo ceph osd pool delete $GLANCE_CEPH_POOL $GLANCE_CEPH_POOL --yes-i-really-really-mean-it > /dev/null 2>&1 |
|
| 134 |
- sudo ceph auth del client.$GLANCE_CEPH_USER > /dev/null 2>&1 |
|
| 135 |
- fi |
|
| 136 |
- if is_service_enabled cinder; then |
|
| 137 |
- sudo ceph osd pool delete $CINDER_CEPH_POOL $CINDER_CEPH_POOL --yes-i-really-really-mean-it > /dev/null 2>&1 |
|
| 138 |
- sudo ceph auth del client.$CINDER_CEPH_USER > /dev/null 2>&1 |
|
| 139 |
- fi |
|
| 140 |
- if is_service_enabled c-bak; then |
|
| 141 |
- sudo ceph osd pool delete $CINDER_BAK_CEPH_POOL $CINDER_BAK_CEPH_POOL --yes-i-really-really-mean-it > /dev/null 2>&1 |
|
| 142 |
- sudo ceph auth del client.$CINDER_BAK_CEPH_USER > /dev/null 2>&1 |
|
| 143 |
- fi |
|
| 144 |
- if is_service_enabled nova; then |
|
| 145 |
- iniset $NOVA_CONF libvirt rbd_secret_uuid "" |
|
| 146 |
- sudo ceph osd pool delete $NOVA_CEPH_POOL $NOVA_CEPH_POOL --yes-i-really-really-mean-it > /dev/null 2>&1 |
|
| 147 |
- fi |
|
| 148 |
-} |
|
| 149 |
- |
|
| 150 |
-function cleanup_ceph_embedded {
|
|
| 151 |
- sudo killall -w -9 ceph-mon |
|
| 152 |
- sudo killall -w -9 ceph-osd |
|
| 153 |
- sudo rm -rf ${CEPH_DATA_DIR}/*/*
|
|
| 154 |
- if egrep -q ${CEPH_DATA_DIR} /proc/mounts; then
|
|
| 155 |
- sudo umount ${CEPH_DATA_DIR}
|
|
| 156 |
- fi |
|
| 157 |
- if [[ -e ${CEPH_DISK_IMAGE} ]]; then
|
|
| 158 |
- sudo rm -f ${CEPH_DISK_IMAGE}
|
|
| 159 |
- fi |
|
| 160 |
- |
|
| 161 |
- # purge ceph config file and keys |
|
| 162 |
- sudo rm -rf ${CEPH_CONF_DIR}/*
|
|
| 163 |
-} |
|
| 164 |
- |
|
| 165 |
-function cleanup_ceph_general {
|
|
| 166 |
- undefine_virsh_secret |
|
| 167 |
-} |
|
| 168 |
- |
|
| 169 |
- |
|
| 170 |
-# configure_ceph() - Set config files, create data dirs, etc |
|
| 171 |
-function configure_ceph {
|
|
| 172 |
- local count=0 |
|
| 173 |
- |
|
| 174 |
- # create a backing file disk |
|
| 175 |
- create_disk ${CEPH_DISK_IMAGE} ${CEPH_DATA_DIR} ${CEPH_LOOPBACK_DISK_SIZE}
|
|
| 176 |
- |
|
| 177 |
- # populate ceph directory |
|
| 178 |
- sudo mkdir -p ${CEPH_DATA_DIR}/{bootstrap-mds,bootstrap-osd,mds,mon,osd,tmp}
|
|
| 179 |
- |
|
| 180 |
- # create ceph monitor initial key and directory |
|
| 181 |
- sudo ceph-authtool /var/lib/ceph/tmp/keyring.mon.$(hostname) \ |
|
| 182 |
- --create-keyring --name=mon. --add-key=$(ceph-authtool --gen-print-key) \ |
|
| 183 |
- --cap mon 'allow *' |
|
| 184 |
- sudo mkdir /var/lib/ceph/mon/ceph-$(hostname) |
|
| 185 |
- |
|
| 186 |
- # create a default ceph configuration file |
|
| 187 |
- sudo tee ${CEPH_CONF_FILE} > /dev/null <<EOF
|
|
| 188 |
-[global] |
|
| 189 |
-fsid = ${CEPH_FSID}
|
|
| 190 |
-mon_initial_members = $(hostname) |
|
| 191 |
-mon_host = ${SERVICE_HOST}
|
|
| 192 |
-auth_cluster_required = cephx |
|
| 193 |
-auth_service_required = cephx |
|
| 194 |
-auth_client_required = cephx |
|
| 195 |
-filestore_xattr_use_omap = true |
|
| 196 |
-osd crush chooseleaf type = 0 |
|
| 197 |
-osd journal size = 100 |
|
| 198 |
-EOF |
|
| 199 |
- |
|
| 200 |
- # bootstrap the ceph monitor |
|
| 201 |
- sudo ceph-mon -c ${CEPH_CONF_FILE} --mkfs -i $(hostname) \
|
|
| 202 |
- --keyring /var/lib/ceph/tmp/keyring.mon.$(hostname) |
|
| 203 |
- |
|
| 204 |
- if is_ubuntu; then |
|
| 205 |
- sudo touch /var/lib/ceph/mon/ceph-$(hostname)/upstart |
|
| 206 |
- sudo initctl emit ceph-mon id=$(hostname) |
|
| 207 |
- else |
|
| 208 |
- sudo touch /var/lib/ceph/mon/ceph-$(hostname)/sysvinit |
|
| 209 |
- sudo service ceph start mon.$(hostname) |
|
| 210 |
- fi |
|
| 211 |
- |
|
| 212 |
- # wait for the admin key to come up otherwise we will not be able to do the actions below |
|
| 213 |
- until [ -f ${CEPH_CONF_DIR}/ceph.client.admin.keyring ]; do
|
|
| 214 |
- echo_summary "Waiting for the Ceph admin key to be ready..." |
|
| 215 |
- |
|
| 216 |
- count=$(($count + 1)) |
|
| 217 |
- if [ $count -eq 3 ]; then |
|
| 218 |
- die $LINENO "Maximum of 3 retries reached" |
|
| 219 |
- fi |
|
| 220 |
- sleep 5 |
|
| 221 |
- done |
|
| 222 |
- |
|
| 223 |
- # pools data and metadata were removed in the Giant release so depending on the version we apply different commands |
|
| 224 |
- local ceph_version |
|
| 225 |
- ceph_version=$(get_ceph_version) |
|
| 226 |
- # change pool replica size according to the CEPH_REPLICAS set by the user |
|
| 227 |
- if [[ ${ceph_version%%.*} -eq 0 ]] && [[ ${ceph_version##*.} -lt 87 ]]; then
|
|
| 228 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd size ${CEPH_REPLICAS}
|
|
| 229 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set data size ${CEPH_REPLICAS}
|
|
| 230 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set metadata size ${CEPH_REPLICAS}
|
|
| 231 |
- else |
|
| 232 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd size ${CEPH_REPLICAS}
|
|
| 233 |
- fi |
|
| 234 |
- |
|
| 235 |
- # create a simple rule to take OSDs instead of host with CRUSH |
|
| 236 |
- # then apply this rules to the default pool |
|
| 237 |
- if [[ $CEPH_REPLICAS -ne 1 ]]; then |
|
| 238 |
- sudo ceph -c ${CEPH_CONF_FILE} osd crush rule create-simple devstack default osd
|
|
| 239 |
- RULE_ID=$(sudo ceph -c ${CEPH_CONF_FILE} osd crush rule dump devstack | awk '/rule_id/ {print $3}' | cut -d ',' -f1)
|
|
| 240 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set rbd crush_ruleset ${RULE_ID}
|
|
| 241 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set data crush_ruleset ${RULE_ID}
|
|
| 242 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set metadata crush_ruleset ${RULE_ID}
|
|
| 243 |
- fi |
|
| 244 |
- |
|
| 245 |
- # create the OSD(s) |
|
| 246 |
- for rep in ${CEPH_REPLICAS_SEQ}; do
|
|
| 247 |
- OSD_ID=$(sudo ceph -c ${CEPH_CONF_FILE} osd create)
|
|
| 248 |
- sudo mkdir -p ${CEPH_DATA_DIR}/osd/ceph-${OSD_ID}
|
|
| 249 |
- sudo ceph-osd -c ${CEPH_CONF_FILE} -i ${OSD_ID} --mkfs
|
|
| 250 |
- sudo ceph -c ${CEPH_CONF_FILE} auth get-or-create osd.${OSD_ID} \
|
|
| 251 |
- mon 'allow profile osd ' osd 'allow *' | \ |
|
| 252 |
- sudo tee ${CEPH_DATA_DIR}/osd/ceph-${OSD_ID}/keyring
|
|
| 253 |
- |
|
| 254 |
- # ceph's init script is parsing ${CEPH_DATA_DIR}/osd/ceph-${OSD_ID}/ and looking for a file
|
|
| 255 |
- # 'upstart' or 'sysinitv', thanks to these 'touches' we are able to control OSDs daemons |
|
| 256 |
- # from the init script. |
|
| 257 |
- if is_ubuntu; then |
|
| 258 |
- sudo touch ${CEPH_DATA_DIR}/osd/ceph-${OSD_ID}/upstart
|
|
| 259 |
- else |
|
| 260 |
- sudo touch ${CEPH_DATA_DIR}/osd/ceph-${OSD_ID}/sysvinit
|
|
| 261 |
- fi |
|
| 262 |
- done |
|
| 263 |
-} |
|
| 264 |
- |
|
| 265 |
-function configure_ceph_embedded_glance {
|
|
| 266 |
- # configure Glance service options, ceph pool, ceph user and ceph key |
|
| 267 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${GLANCE_CEPH_POOL} size ${CEPH_REPLICAS}
|
|
| 268 |
- if [[ $CEPH_REPLICAS -ne 1 ]]; then |
|
| 269 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${GLANCE_CEPH_POOL} crush_ruleset ${RULE_ID}
|
|
| 270 |
- fi |
|
| 271 |
-} |
|
| 272 |
- |
|
| 273 |
-# configure_ceph_glance() - Glance config needs to come after Glance is set up |
|
| 274 |
-function configure_ceph_glance {
|
|
| 275 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool create ${GLANCE_CEPH_POOL} ${GLANCE_CEPH_POOL_PG} ${GLANCE_CEPH_POOL_PGP}
|
|
| 276 |
- sudo ceph -c ${CEPH_CONF_FILE} auth get-or-create client.${GLANCE_CEPH_USER} \
|
|
| 277 |
- mon "allow r" \ |
|
| 278 |
- osd "allow class-read object_prefix rbd_children, allow rwx pool=${GLANCE_CEPH_POOL}" | \
|
|
| 279 |
- sudo tee ${CEPH_CONF_DIR}/ceph.client.${GLANCE_CEPH_USER}.keyring
|
|
| 280 |
- sudo chown ${STACK_USER}:$(id -g -n $whoami) ${CEPH_CONF_DIR}/ceph.client.${GLANCE_CEPH_USER}.keyring
|
|
| 281 |
- |
|
| 282 |
- iniset $GLANCE_API_CONF DEFAULT show_image_direct_url True |
|
| 283 |
- iniset $GLANCE_API_CONF glance_store default_store rbd |
|
| 284 |
- iniset $GLANCE_API_CONF glance_store stores "file, http, rbd" |
|
| 285 |
- iniset $GLANCE_API_CONF glance_store rbd_store_ceph_conf $CEPH_CONF_FILE |
|
| 286 |
- iniset $GLANCE_API_CONF glance_store rbd_store_user $GLANCE_CEPH_USER |
|
| 287 |
- iniset $GLANCE_API_CONF glance_store rbd_store_pool $GLANCE_CEPH_POOL |
|
| 288 |
-} |
|
| 289 |
- |
|
| 290 |
-function configure_ceph_embedded_nova {
|
|
| 291 |
- # configure Nova service options, ceph pool, ceph user and ceph key |
|
| 292 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${NOVA_CEPH_POOL} size ${CEPH_REPLICAS}
|
|
| 293 |
- if [[ $CEPH_REPLICAS -ne 1 ]]; then |
|
| 294 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${NOVA_CEPH_POOL} crush_ruleset ${RULE_ID}
|
|
| 295 |
- fi |
|
| 296 |
-} |
|
| 297 |
- |
|
| 298 |
-# configure_ceph_nova() - Nova config needs to come after Nova is set up |
|
| 299 |
-function configure_ceph_nova {
|
|
| 300 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool create ${NOVA_CEPH_POOL} ${NOVA_CEPH_POOL_PG} ${NOVA_CEPH_POOL_PGP}
|
|
| 301 |
- iniset $NOVA_CONF libvirt rbd_user ${CINDER_CEPH_USER}
|
|
| 302 |
- iniset $NOVA_CONF libvirt rbd_secret_uuid ${CINDER_CEPH_UUID}
|
|
| 303 |
- iniset $NOVA_CONF libvirt inject_key false |
|
| 304 |
- iniset $NOVA_CONF libvirt disk_cachemodes "network=writeback" |
|
| 305 |
- iniset $NOVA_CONF libvirt images_type rbd |
|
| 306 |
- iniset $NOVA_CONF libvirt images_rbd_pool ${NOVA_CEPH_POOL}
|
|
| 307 |
- iniset $NOVA_CONF libvirt images_rbd_ceph_conf ${CEPH_CONF_FILE}
|
|
| 308 |
- |
|
| 309 |
- if ! is_service_enabled cinder; then |
|
| 310 |
- sudo ceph -c ${CEPH_CONF_FILE} auth get-or-create client.${CINDER_CEPH_USER} \
|
|
| 311 |
- mon "allow r" \ |
|
| 312 |
- osd "allow class-read object_prefix rbd_children, allow rwx pool=${CINDER_CEPH_POOL}, allow rwx pool=${NOVA_CEPH_POOL},allow rwx pool=${GLANCE_CEPH_POOL}" | \
|
|
| 313 |
- sudo tee ${CEPH_CONF_DIR}/ceph.client.${CINDER_CEPH_USER}.keyring > /dev/null
|
|
| 314 |
- sudo chown ${STACK_USER}:$(id -g -n $whoami) ${CEPH_CONF_DIR}/ceph.client.${CINDER_CEPH_USER}.keyring
|
|
| 315 |
- fi |
|
| 316 |
-} |
|
| 317 |
- |
|
| 318 |
-function configure_ceph_embedded_cinder {
|
|
| 319 |
- # Configure Cinder service options, ceph pool, ceph user and ceph key |
|
| 320 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${CINDER_CEPH_POOL} size ${CEPH_REPLICAS}
|
|
| 321 |
- if [[ $CEPH_REPLICAS -ne 1 ]]; then |
|
| 322 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool set ${CINDER_CEPH_POOL} crush_ruleset ${RULE_ID}
|
|
| 323 |
- fi |
|
| 324 |
-} |
|
| 325 |
- |
|
| 326 |
-# configure_ceph_cinder() - Cinder config needs to come after Cinder is set up |
|
| 327 |
-function configure_ceph_cinder {
|
|
| 328 |
- sudo ceph -c ${CEPH_CONF_FILE} osd pool create ${CINDER_CEPH_POOL} ${CINDER_CEPH_POOL_PG} ${CINDER_CEPH_POOL_PGP}
|
|
| 329 |
- sudo ceph -c ${CEPH_CONF_FILE} auth get-or-create client.${CINDER_CEPH_USER} \
|
|
| 330 |
- mon "allow r" \ |
|
| 331 |
- osd "allow class-read object_prefix rbd_children, allow rwx pool=${CINDER_CEPH_POOL}, allow rwx pool=${NOVA_CEPH_POOL},allow rwx pool=${GLANCE_CEPH_POOL}" | \
|
|
| 332 |
- sudo tee ${CEPH_CONF_DIR}/ceph.client.${CINDER_CEPH_USER}.keyring
|
|
| 333 |
- sudo chown ${STACK_USER}:$(id -g -n $whoami) ${CEPH_CONF_DIR}/ceph.client.${CINDER_CEPH_USER}.keyring
|
|
| 334 |
-} |
|
| 335 |
- |
|
| 336 |
-# init_ceph() - Initialize databases, etc. |
|
| 337 |
-function init_ceph {
|
|
| 338 |
- # clean up from previous (possibly aborted) runs |
|
| 339 |
- # make sure to kill all ceph processes first |
|
| 340 |
- sudo pkill -f ceph-mon || true |
|
| 341 |
- sudo pkill -f ceph-osd || true |
|
| 342 |
-} |
|
| 343 |
- |
|
| 344 |
-# install_ceph() - Collect source and prepare |
|
| 345 |
-function install_ceph_remote {
|
|
| 346 |
- install_package ceph-common |
|
| 347 |
-} |
|
| 348 |
- |
|
| 349 |
-function install_ceph {
|
|
| 350 |
- install_package ceph |
|
| 351 |
-} |
|
| 352 |
- |
|
| 353 |
-# start_ceph() - Start running processes, including screen |
|
| 354 |
-function start_ceph {
|
|
| 355 |
- if is_ubuntu; then |
|
| 356 |
- sudo initctl emit ceph-mon id=$(hostname) |
|
| 357 |
- for id in $(sudo ceph -c ${CEPH_CONF_FILE} osd ls); do
|
|
| 358 |
- sudo start ceph-osd id=${id}
|
|
| 359 |
- done |
|
| 360 |
- else |
|
| 361 |
- sudo service ceph start |
|
| 362 |
- fi |
|
| 363 |
-} |
|
| 364 |
- |
|
| 365 |
-# stop_ceph() - Stop running processes (non-screen) |
|
| 366 |
-function stop_ceph {
|
|
| 367 |
- if is_ubuntu; then |
|
| 368 |
- sudo service ceph-mon-all stop > /dev/null 2>&1 |
|
| 369 |
- sudo service ceph-osd-all stop > /dev/null 2>&1 |
|
| 370 |
- else |
|
| 371 |
- sudo service ceph stop > /dev/null 2>&1 |
|
| 372 |
- fi |
|
| 373 |
-} |
|
| 374 |
- |
|
| 375 |
- |
|
| 376 |
-# Restore xtrace |
|
| 377 |
-$_XTRACE_LIB_CEPH |
|
| 378 |
- |
|
| 379 |
-## Local variables: |
|
| 380 |
-## mode: shell-script |
|
| 381 |
-## End: |