Merge "Fix ceph iscsi gw not working on ubuntu focal"
This commit is contained in:
commit
0d985a8a46
|
@ -118,15 +118,14 @@ CEPH_RGW_KEYSTONE_SSL=$(trueorfalse False CEPH_RGW_KEYSTONE_SSL)
|
||||||
CEPH_ISCSI_TARGET_IQN=${CEPH_ISCSI_TARGET_IQN:-iqn.1993-08.org.opendev:01:a9aa4032d2c1}
|
CEPH_ISCSI_TARGET_IQN=${CEPH_ISCSI_TARGET_IQN:-iqn.1993-08.org.opendev:01:a9aa4032d2c1}
|
||||||
CEPH_ISCSI_API_USER=${CEPH_ISCSI_API_USER:-openstack}
|
CEPH_ISCSI_API_USER=${CEPH_ISCSI_API_USER:-openstack}
|
||||||
CEPH_ISCSI_API_PASSWORD=${CEPH_ISCSI_API_PASSWORD:-openstack}
|
CEPH_ISCSI_API_PASSWORD=${CEPH_ISCSI_API_PASSWORD:-openstack}
|
||||||
CEPH_ISCSI_API_HOST=${CEPH_ISCSI_API_HOST:-localhost}
|
CEPH_ISCSI_API_HOST=${CEPH_ISCSI_API_HOST:-$SERVICE_HOST}
|
||||||
CEPH_ISCSI_API_PORT=${CEPH_ISCSI_API_PORT:-5002}
|
CEPH_ISCSI_API_PORT=${CEPH_ISCSI_API_PORT:-5002}
|
||||||
CEPH_ISCSI_GATEWAY_CFG=${CEPH_CONF_DIR}/iscsi-gateway.cfg
|
CEPH_ISCSI_GATEWAY_CFG=${CEPH_CONF_DIR}/iscsi-gateway.cfg
|
||||||
|
CEPH_ISCSI_MINIMUM_GATEWAYS=${CEPH_ISCSI_MINIMUM_GATEWAYS:-1}
|
||||||
|
|
||||||
# gwcli requires a pool named rbd
|
# gwcli requires a pool named rbd
|
||||||
CEPH_ISCSI_POOL="rbd"
|
CEPH_ISCSI_POOL="rbd"
|
||||||
CEPH_ISCSI_POOL_PG=${CEPH_ISCSI_POOL_PG:-8}
|
CEPH_ISCSI_POOL_PG=${CEPH_ISCSI_POOL_PG:-8}
|
||||||
TCMU_RUNNER_REPO="https://github.com/open-iscsi/tcmu-runner.git"
|
|
||||||
TARGETCLI_REPO="https://github.com/open-iscsi/targetcli-fb.git"
|
|
||||||
CEPH_ISCSI_REPO="https://github.com/ceph/ceph-iscsi.git"
|
|
||||||
|
|
||||||
# Ceph REST API (for containerized version only)
|
# Ceph REST API (for containerized version only)
|
||||||
# Default is 5000, but Keystone already listens on 5000
|
# Default is 5000, but Keystone already listens on 5000
|
||||||
|
@ -342,9 +341,6 @@ function cleanup_ceph_embedded {
|
||||||
if [ "$ENABLE_CEPH_RGW" = "True" ]; then
|
if [ "$ENABLE_CEPH_RGW" = "True" ]; then
|
||||||
sudo killall -w -9 radosgw
|
sudo killall -w -9 radosgw
|
||||||
fi
|
fi
|
||||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
|
||||||
stop_ceph_iscsi
|
|
||||||
fi
|
|
||||||
sudo rm -rf ${CEPH_DATA_DIR}/*/*
|
sudo rm -rf ${CEPH_DATA_DIR}/*/*
|
||||||
if egrep -q ${CEPH_DATA_DIR} /proc/mounts; then
|
if egrep -q ${CEPH_DATA_DIR} /proc/mounts; then
|
||||||
sudo umount ${CEPH_DATA_DIR}
|
sudo umount ${CEPH_DATA_DIR}
|
||||||
|
@ -412,6 +408,12 @@ function configure_ceph {
|
||||||
|
|
||||||
sudo mkdir -p ${CEPH_DATA_DIR}/mon/ceph-$(hostname)
|
sudo mkdir -p ${CEPH_DATA_DIR}/mon/ceph-$(hostname)
|
||||||
|
|
||||||
|
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||||
|
# exclusive locks must be enabled by default
|
||||||
|
# for images being exported for ceph iscsi
|
||||||
|
CEPH_RBD_DEFAULT_FEATURES=$(($CEPH_RBD_DEFAULT_FEATURES + 4))
|
||||||
|
fi
|
||||||
|
|
||||||
# create a default ceph configuration file
|
# create a default ceph configuration file
|
||||||
iniset -sudo ${CEPH_CONF_FILE} global "fsid" "${CEPH_FSID}"
|
iniset -sudo ${CEPH_CONF_FILE} global "fsid" "${CEPH_FSID}"
|
||||||
iniset -sudo ${CEPH_CONF_FILE} global "mon_initial_members" "$(hostname)"
|
iniset -sudo ${CEPH_CONF_FILE} global "mon_initial_members" "$(hostname)"
|
||||||
|
@ -561,6 +563,7 @@ function _configure_ceph_rgw {
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_ceph_iscsi_gateway {
|
function _configure_ceph_iscsi_gateway {
|
||||||
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "minimum_gateways" $CEPH_ISCSI_MINIMUM_GATEWAYS
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "trusted_ip_list" "$HOST_IP,localhost"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "trusted_ip_list" "$HOST_IP,localhost"
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "cluster_name" "ceph"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "cluster_name" "ceph"
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "gateway_keyring" "ceph.client.admin.keyring"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "gateway_keyring" "ceph.client.admin.keyring"
|
||||||
|
@ -569,7 +572,6 @@ function _configure_ceph_iscsi_gateway {
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_user" "$CEPH_ISCSI_API_USER"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_user" "$CEPH_ISCSI_API_USER"
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_password" "$CEPH_ISCSI_API_PASSWORD"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_password" "$CEPH_ISCSI_API_PASSWORD"
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_port" "$CEPH_ISCSI_API_PORT"
|
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_port" "$CEPH_ISCSI_API_PORT"
|
||||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "api_host" "$CEPH_ISCSI_API_HOST"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _configure_ceph_iscsi {
|
function _configure_ceph_iscsi {
|
||||||
|
@ -587,14 +589,14 @@ function _post_start_configure_iscsi_gateway {
|
||||||
# Now we setup the rbd-target-gw and rbd-target-api for use
|
# Now we setup the rbd-target-gw and rbd-target-api for use
|
||||||
GWCLI=$(which gwcli)
|
GWCLI=$(which gwcli)
|
||||||
removeme=$(sudo systemctl status rbd-target-api)
|
removeme=$(sudo systemctl status rbd-target-api)
|
||||||
HOSTNAME=$(hostname)
|
FQDN=$(hostname -f)
|
||||||
|
|
||||||
# create the target_iqn for exporting all volumes
|
# create the target_iqn for exporting all volumes
|
||||||
sudo $GWCLI /iscsi-targets create $CEPH_ISCSI_TARGET_IQN
|
sudo $GWCLI /iscsi-targets create $CEPH_ISCSI_TARGET_IQN
|
||||||
|
|
||||||
# now we add the gateway definition
|
# now we add the gateway definition
|
||||||
# Didn't find the gateway, so lets create it
|
# Didn't find the gateway, so lets create it
|
||||||
sudo $GWCLI /iscsi-targets/$CEPH_ISCSI_TARGET_IQN/gateways create $HOSTNAME $HOST_IP skipchecks=true
|
sudo $GWCLI /iscsi-targets/$CEPH_ISCSI_TARGET_IQN/gateways create $FQDN $HOST_IP skipchecks=true
|
||||||
}
|
}
|
||||||
|
|
||||||
function start_ceph_iscsi {
|
function start_ceph_iscsi {
|
||||||
|
@ -608,8 +610,9 @@ function start_ceph_iscsi {
|
||||||
}
|
}
|
||||||
|
|
||||||
function stop_ceph_iscsi {
|
function stop_ceph_iscsi {
|
||||||
HOSTNAME=$(hostname)
|
GWCLI=$(which gwcli)
|
||||||
sudo $GWCLI /iscsi-targets/$CEPH_ISCSI_TARGET_IQN/gateways delete $HOSTNAME
|
FQDN=$(hostname -f)
|
||||||
|
sudo $GWCLI /iscsi-targets/$CEPH_ISCSI_TARGET_IQN/gateways delete $FQDN confirm=true
|
||||||
sudo $GWCLI /iscsi-targets delete $CEPH_ISCSI_TARGET_IQN
|
sudo $GWCLI /iscsi-targets delete $CEPH_ISCSI_TARGET_IQN
|
||||||
|
|
||||||
sudo systemctl stop rbd-target-api
|
sudo systemctl stop rbd-target-api
|
||||||
|
@ -956,44 +959,6 @@ function cleanup_repo_nfsganesha {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_packages_for_iscsi {
|
|
||||||
CWD=$(pwd)
|
|
||||||
|
|
||||||
# We have to install the following required packages for ceph-iscsi
|
|
||||||
# tcmu-runner, trslib-fb, configshell-fb, targetcli-fb, ceph-iscsi
|
|
||||||
git_clone $TCMU_RUNNER_REPO $DEST/tcmu-runner master
|
|
||||||
cd $DEST/tcmu-runner
|
|
||||||
if is_fedora; then
|
|
||||||
# we can run the install extras from tcmu-runner here
|
|
||||||
extra/install_dep.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmake -Dwith-glfs=false -Dwith-qcow=false -DSUPPORT_SYSTEMD=on -DCMAKE_INSTALL_PREFIX=/usr
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
pip_install rtslib-fb
|
|
||||||
pip_install configshell-fb
|
|
||||||
|
|
||||||
# not in pypi yet.
|
|
||||||
git_clone $TARGETCLI_REPO $DEST/targetcli-fb master
|
|
||||||
cd $DEST/targetcli-fb
|
|
||||||
sudo python setup.py install
|
|
||||||
if [ ! -d /etc/target ]; then
|
|
||||||
sudo mkdir /etc/target
|
|
||||||
fi
|
|
||||||
if [ ! -d /var/target ]; then
|
|
||||||
sudo mkdir /var/target
|
|
||||||
fi
|
|
||||||
|
|
||||||
git_clone $CEPH_ISCSI_REPO $DEST/ceph-iscsi master
|
|
||||||
cd $DEST/ceph-iscsi
|
|
||||||
sudo python setup.py install --install-scripts=/usr/bin
|
|
||||||
sudo cp usr/lib/systemd/system/rbd-target-gw.service /lib/systemd/system
|
|
||||||
sudo cp usr/lib/systemd/system/rbd-target-api.service /lib/systemd/system
|
|
||||||
|
|
||||||
cd $CWD
|
|
||||||
}
|
|
||||||
|
|
||||||
function setup_packages_for_manila_on_ubuntu {
|
function setup_packages_for_manila_on_ubuntu {
|
||||||
# The 'apt-get' package manager needs the following package to access
|
# The 'apt-get' package manager needs the following package to access
|
||||||
# HTTPS enabled repositories such as the Ceph repos hosted by the
|
# HTTPS enabled repositories such as the Ceph repos hosted by the
|
||||||
|
@ -1056,18 +1021,13 @@ function install_ceph {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-pyparsing python-kmodpy python-pyudev"
|
# Only Ubuntu Focal have the required packages. Using distro provided
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-gobject python-urwid python-rados python-rbd"
|
# packages might be more stable for CI.
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-netifaces python-crypto python-requests python-flask"
|
if [[ $os_CODENAME =~ focal ]]; then
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-openssl python-rpm open-iscsi"
|
CEPH_PACKAGES="${CEPH_PACKAGES} ceph-iscsi targetcli-fb "
|
||||||
|
else
|
||||||
# The packages needed to build tcmu-runner, since there is no
|
die $LINENO "For ubuntu, ceph iscsi only support focal now"
|
||||||
# ubuntu package yet.
|
fi
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} cmake make gcc libnl-genl-3-200"
|
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} librbd1 librbd-dev libglib2.0-0 libglib2.0-bin zlib1g"
|
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} libkmod2 libnl-genl-3-dev libglib2.0-dev"
|
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} zlib1g-dev libkmod-dev"
|
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} libgoogle-perftools4 libgoogle-perftools-dev"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_package ${CEPH_PACKAGES}
|
install_package ${CEPH_PACKAGES}
|
||||||
|
@ -1091,20 +1051,15 @@ function install_ceph {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} librbd1 libkmod2 python-pyparsing python-kmod python-pyudev"
|
# TODO(xinliang): Install shaman ceph iscsi gateway packages like ceph-ansible:
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-gobject python-urwid python-rados python-rbd"
|
# https://github.com/ceph/ceph-ansible/blob/6dd9b255656b7124f8963cf65a862930fa28d162/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml#L2
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-netifaces python-crypto python-requests python-flask"
|
die $LINENO "Ceph iscsi gateway is not supported for ${os_VENDOR} distro yet"
|
||||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-openssl iscsi-initiator-utils"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_package ${CEPH_PACKAGES}
|
install_package ${CEPH_PACKAGES}
|
||||||
else
|
else
|
||||||
die $LINENO "${os_VENDOR} is not supported by the Ceph plugin for Devstack"
|
die $LINENO "${os_VENDOR} is not supported by the Ceph plugin for Devstack"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
|
||||||
setup_packages_for_iscsi
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# start_ceph() - Start running processes, including screen
|
# start_ceph() - Start running processes, including screen
|
||||||
|
|
Loading…
Reference in New Issue