Fix ceph iscsi gw not working on ubuntu focal
Limit ceph iscsi ubuntu support only to Focal. As only Focal has the required packages and we don't want to install ceph-iscsi from master source code which is changing all the way is not a good way for CI. Remove api_host setting, let it be ceph iscsi default setting "::"[1], Which references to ceph-ansible configuration[2]. This makes rbd-target-api accessible for both localhost(gwcli) and HOST_IP. Otherwise iscsi gateway creation will fail in newer version ceph-iscsi[3]. Change minimum-gateways default to 1 for newer version ceph-iscsi, otherwise client creation will fail on all-in-one setup[4]. Fix gateway creation failure with error: "The first gateway defined must be the local machine" Ceph-iscsi requires gateway name to be FQDN, sometimes hostname is not the same as FQDN. Fix stop_ceph_iscsi run twice. Remove setup_packages_for_iscsi as openstack won't support projects that require packages installed with git clone. [1]: https://github.com/ceph/ceph-iscsi/blob/master/ceph_iscsi_config/gateway_setting.py#L174 [2]: https://github.com/ceph/ceph-ansible/blob/master/roles/ceph-iscsi-gw/templates/iscsi-gateway.cfg.j2 [3]: https://github.com/ceph/ceph-iscsi/issues/193 [4]: https://github.com/ceph/ceph-iscsi/issues/195 Change-Id: I215b870c66cc27f10f8a6bf18d93feda477a3970
This commit is contained in:
parent
819f3995af
commit
478b61632b
|
@ -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_API_USER=${CEPH_ISCSI_API_USER:-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_GATEWAY_CFG=${CEPH_CONF_DIR}/iscsi-gateway.cfg
|
||||
CEPH_ISCSI_MINIMUM_GATEWAYS=${CEPH_ISCSI_MINIMUM_GATEWAYS:-1}
|
||||
|
||||
# gwcli requires a pool named rbd
|
||||
CEPH_ISCSI_POOL="rbd"
|
||||
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)
|
||||
# Default is 5000, but Keystone already listens on 5000
|
||||
|
@ -342,9 +341,6 @@ function cleanup_ceph_embedded {
|
|||
if [ "$ENABLE_CEPH_RGW" = "True" ]; then
|
||||
sudo killall -w -9 radosgw
|
||||
fi
|
||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||
stop_ceph_iscsi
|
||||
fi
|
||||
sudo rm -rf ${CEPH_DATA_DIR}/*/*
|
||||
if egrep -q ${CEPH_DATA_DIR} /proc/mounts; then
|
||||
sudo umount ${CEPH_DATA_DIR}
|
||||
|
@ -412,6 +408,12 @@ function configure_ceph {
|
|||
|
||||
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
|
||||
iniset -sudo ${CEPH_CONF_FILE} global "fsid" "${CEPH_FSID}"
|
||||
iniset -sudo ${CEPH_CONF_FILE} global "mon_initial_members" "$(hostname)"
|
||||
|
@ -557,6 +559,7 @@ function _configure_ceph_rgw {
|
|||
}
|
||||
|
||||
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 "cluster_name" "ceph"
|
||||
iniset -sudo ${CEPH_ISCSI_GATEWAY_CFG} config "gateway_keyring" "ceph.client.admin.keyring"
|
||||
|
@ -565,7 +568,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_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_host" "$CEPH_ISCSI_API_HOST"
|
||||
}
|
||||
|
||||
function _configure_ceph_iscsi {
|
||||
|
@ -583,14 +585,14 @@ function _post_start_configure_iscsi_gateway {
|
|||
# Now we setup the rbd-target-gw and rbd-target-api for use
|
||||
GWCLI=$(which gwcli)
|
||||
removeme=$(sudo systemctl status rbd-target-api)
|
||||
HOSTNAME=$(hostname)
|
||||
FQDN=$(hostname -f)
|
||||
|
||||
# create the target_iqn for exporting all volumes
|
||||
sudo $GWCLI /iscsi-targets create $CEPH_ISCSI_TARGET_IQN
|
||||
|
||||
# now we add the gateway definition
|
||||
# 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 {
|
||||
|
@ -604,8 +606,9 @@ function start_ceph_iscsi {
|
|||
}
|
||||
|
||||
function stop_ceph_iscsi {
|
||||
HOSTNAME=$(hostname)
|
||||
sudo $GWCLI /iscsi-targets/$CEPH_ISCSI_TARGET_IQN/gateways delete $HOSTNAME
|
||||
GWCLI=$(which gwcli)
|
||||
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 systemctl stop rbd-target-api
|
||||
|
@ -952,44 +955,6 @@ function cleanup_repo_nfsganesha {
|
|||
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 {
|
||||
# The 'apt-get' package manager needs the following package to access
|
||||
# HTTPS enabled repositories such as the Ceph repos hosted by the
|
||||
|
@ -1052,18 +1017,13 @@ function install_ceph {
|
|||
fi
|
||||
|
||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-pyparsing python-kmodpy python-pyudev"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-gobject python-urwid python-rados python-rbd"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-netifaces python-crypto python-requests python-flask"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-openssl python-rpm open-iscsi"
|
||||
|
||||
# The packages needed to build tcmu-runner, since there is no
|
||||
# ubuntu package yet.
|
||||
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"
|
||||
# Only Ubuntu Focal have the required packages. Using distro provided
|
||||
# packages might be more stable for CI.
|
||||
if [[ $os_CODENAME =~ focal ]]; then
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} ceph-iscsi targetcli-fb "
|
||||
else
|
||||
die $LINENO "For ubuntu, ceph iscsi only support focal now"
|
||||
fi
|
||||
fi
|
||||
|
||||
install_package ${CEPH_PACKAGES}
|
||||
|
@ -1087,20 +1047,15 @@ function install_ceph {
|
|||
fi
|
||||
|
||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} librbd1 libkmod2 python-pyparsing python-kmod python-pyudev"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-gobject python-urwid python-rados python-rbd"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-netifaces python-crypto python-requests python-flask"
|
||||
CEPH_PACKAGES="${CEPH_PACKAGES} python-openssl iscsi-initiator-utils"
|
||||
# TODO(xinliang): Install shaman ceph iscsi gateway packages like ceph-ansible:
|
||||
# https://github.com/ceph/ceph-ansible/blob/6dd9b255656b7124f8963cf65a862930fa28d162/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml#L2
|
||||
die $LINENO "Ceph iscsi gateway is not supported for ${os_VENDOR} distro yet"
|
||||
fi
|
||||
|
||||
install_package ${CEPH_PACKAGES}
|
||||
else
|
||||
die $LINENO "${os_VENDOR} is not supported by the Ceph plugin for Devstack"
|
||||
fi
|
||||
|
||||
if [ "$ENABLE_CEPH_ISCSI" = "True" ]; then
|
||||
setup_packages_for_iscsi
|
||||
fi
|
||||
}
|
||||
|
||||
# start_ceph() - Start running processes, including screen
|
||||
|
|
Loading…
Reference in New Issue