diff --git a/.zuul.yaml b/.zuul.yaml index 6820c71..b3580ad 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -110,20 +110,34 @@ parent: tempest-multinode-full-py3 description: | Integration tests that runs the ceph device plugin across multiple +<<<<<<< HEAD (2d61c3 [Partial Backport] Revert "Temporary pin the ceph jobs nodes) nodes on py3. # TODO: Remove the nodeset pinning to focal once below bug is fixed # https://bugs.launchpad.net/devstack-plugin-ceph/+bug/1996628 nodeset: openstack-two-node-focal +======= + nodes on py3. The Ceph deployment strategy used by this job is Cephadm. +>>>>>>> CHANGE (b663a9 Remote Ceph with cephadm) required-projects: - openstack/cinder-tempest-plugin - openstack/devstack-plugin-ceph timeout: 10800 - voting: false vars: + configure_swap_size: 8192 + tempest_concurrency: 3 devstack_localrc: ENABLE_FILE_INJECTION: false ENABLE_VOLUME_MULTIATTACH: true +<<<<<<< HEAD (2d61c3 [Partial Backport] Revert "Temporary pin the ceph jobs nodes) TEMPEST_RUN_VALIDATION: false +======= + TEMPEST_RUN_VALIDATION: true + USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION: false + CEPHADM_DEPLOY: True + DISABLE_CEPHADM_POST_DEPLOY: True + MYSQL_REDUCE_MEMORY: True + REMOTE_CEPH: False +>>>>>>> CHANGE (b663a9 Remote Ceph with cephadm) CINDER_CEPH_UUID: d531d2d4-3937-429c-b0c2-658fe41e82aa devstack_plugins: devstack-plugin-ceph: https://opendev.org/openstack/devstack-plugin-ceph @@ -139,7 +153,8 @@ group-vars: subnode: devstack_localrc: - REMOTE_CEPH: true + REMOTE_CEPH: True + CEPHADM_DEPLOY: True CINDER_CEPH_UUID: d531d2d4-3937-429c-b0c2-658fe41e82aa - job: @@ -153,19 +168,6 @@ devstack_localrc: TEST_MASTER: true -- job: - name: devstack-plugin-ceph-multinode-tempest-cephadm - parent: devstack-plugin-ceph-multinode-tempest-py3 - description: | - Integration tests that runs the ceph device plugin across multiple - nodes on py3. - The ceph deployment strategy used by this job is cephadm. - vars: - devstack_localrc: - USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION: false - CEPHADM_DEPLOY: true - tempest_concurrency: 1 - - project-template: name: devstack-plugin-ceph-tempest-jobs description: | @@ -176,9 +178,11 @@ voting: false - devstack-plugin-ceph-tempest-cephadm: voting: false + - devstack-plugin-ceph-multinode-tempest-py3 - devstack-plugin-ceph-cephfs-native: irrelevant-files: *irrelevant-files voting: false +<<<<<<< HEAD (2d61c3 [Partial Backport] Revert "Temporary pin the ceph jobs nodes) # - devstack-plugin-ceph-cephfs-nfs: # irrelevant-files: *irrelevant-files # voting: false @@ -186,6 +190,11 @@ # - devstack-plugin-ceph-multinode-tempest-py3 # - devstack-plugin-ceph-multinode-tempest-cephadm: # voting: false +======= + - devstack-plugin-ceph-cephfs-nfs: + irrelevant-files: *irrelevant-files + voting: false +>>>>>>> CHANGE (b663a9 Remote Ceph with cephadm) # - devstack-plugin-ceph-master-tempest: # voting: false # gate: diff --git a/devstack/files/debs/devstack-plugin-ceph b/devstack/files/debs/devstack-plugin-ceph new file mode 100644 index 0000000..e25e5b8 --- /dev/null +++ b/devstack/files/debs/devstack-plugin-ceph @@ -0,0 +1,9 @@ +<<<<<<< HEAD (2d61c3 [Partial Backport] Revert "Temporary pin the ceph jobs nodes) +======= +xfsprogs +qemu-block-extra +catatonit +podman +jq +ceph-common +>>>>>>> CHANGE (b663a9 Remote Ceph with cephadm) diff --git a/devstack/files/rpms/devstack-plugin-ceph b/devstack/files/rpms/devstack-plugin-ceph new file mode 100644 index 0000000..48a11be --- /dev/null +++ b/devstack/files/rpms/devstack-plugin-ceph @@ -0,0 +1,8 @@ +<<<<<<< HEAD (2d61c3 [Partial Backport] Revert "Temporary pin the ceph jobs nodes) +======= +xfsprogs +dbus-tools +podman +jq +ceph-common +>>>>>>> CHANGE (b663a9 Remote Ceph with cephadm) diff --git a/devstack/lib/cephadm b/devstack/lib/cephadm index 8b5e685..cd2cd2c 100755 --- a/devstack/lib/cephadm +++ b/devstack/lib/cephadm @@ -31,7 +31,11 @@ DISABLE_CEPHADM_POST_DEPLOY=${DISABLE_CEPHADM_POST_DEPLOY:-False} ATTEMPTS=30 CONTAINER_IMAGE=${CONTAINER_IMAGE:-'quay.io/ceph/ceph:v17.2.3'} DEVICES=() -FSID=$(uuidgen) +if [[ "$REMOTE_CEPH" = "False" ]]; then + FSID=$(uuidgen) +else + FSID=$(cat $CEPH_CONFIG | grep fsid | awk 'BEGIN { RS = "fsid = "} ; { print $0 }' - ) +fi KEY_EXPORT_DIR="/etc/ceph" KEYS=("client.openstack") # at least the client.openstack default key should be created MIN_OSDS=1 @@ -117,28 +121,11 @@ function export_spec { echo "Ceph cluster config exported: $EXPORT" } -# Pre-install ceph: install podman -function _install_podman { - # FIXME(vkmc) Check required for Ubuntu 20.04 LTS (current CI node) - # Remove when our CI is pushed to the next LTS version - if ! command -v podman &> /dev/null; then - if [[ $os_CODENAME =~ (focal) ]]; then - echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /" \ - | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list - curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/Release.key" \ - | sudo apt-key add - - sudo apt-get update - sudo apt-get -y upgrade - fi - install_package podman - fi -} - # Pre-install ceph: install required dependencies function install_deps { - install_package jq ceph-common - _install_podman - install_package python3-cephfs python3-prettytable python3-rados python3-rbd python3-requests + if [[ "$REMOTE_CEPH" == "False" ]]; then + install_package python3-cephfs python3-prettytable python3-rados python3-rbd python3-requests + fi } # Pre-install ceph: get cephadm binary @@ -176,7 +163,7 @@ EOF function start_ceph { cluster=$(sudo cephadm ls | jq '.[]' | jq 'select(.name | test("^mon*")).fsid') if [ -z "$cluster" ]; then - $SUDO $CEPHADM --image "$CONTAINER_IMAGE" \ + $SUDO "$CEPHADM" --image "$CONTAINER_IMAGE" \ bootstrap \ --fsid $FSID \ --config "$BOOTSTRAP_CONFIG" \ @@ -234,7 +221,7 @@ function add_osds { # let's add some osds if [ -z "$DEVICES" ]; then echo "Using ALL available devices" - $SUDO $CEPHADM shell ceph orch apply osd --all-available-devices + $SUDO "$CEPHADM" shell ceph orch apply osd --all-available-devices else for item in "${DEVICES[@]}"; do echo "Creating osd $item on node $HOSTNAME" @@ -244,7 +231,7 @@ function add_osds { fi while [ "$ATTEMPTS" -ne 0 ]; do - num_osds=$($SUDO $CEPHADM shell --fsid $FSID --config $CEPH_CONFIG \ + num_osds=$($SUDO "$CEPHADM" shell --fsid $FSID --config $CEPH_CONFIG \ --keyring $CEPH_KEYRING -- ceph -s -f json | jq '.osdmap | .num_up_osds') if [ "$num_osds" -ge "$MIN_OSDS" ]; then break; @@ -300,6 +287,7 @@ function _create_key { --keyring $CEPH_KEYRING -- ceph auth get-or-create "$name" mgr "allow rw" mon "allow r" osd "$osd_caps" \ -o "$KEY_EXPORT_DIR/ceph.$name.keyring" + $SUDO chown ${STACK_USER}:$(id -g -n $whoami) \ ${CEPH_CONF_DIR}/ceph.$name.keyring } @@ -642,7 +630,6 @@ function configure_ceph { if is_ceph_enabled_for_service cinder; then POOLS+=($CINDER_CEPH_POOL) KEYS+=("client.$CINDER_CEPH_USER") - set_min_client_version fi if is_ceph_enabled_for_service c-bak; then @@ -659,8 +646,10 @@ function configure_ceph { [ "$ENABLE_CEPH_RGW" == "True" ] && SERVICES+=('rgw') enable_services - add_pools - create_keys + if [[ "$REMOTE_CEPH" = "False" ]]; then + add_pools + create_keys + fi client_config import_libvirt_secret_ceph @@ -677,8 +666,12 @@ function configure_ceph_manila { function cleanup_ceph { # Cleanup the service. - stop_ceph - delete_osd_dev + if [[ "$REMOTE_CEPH" == "True" ]]; then + echo "Remote Ceph cluster, skipping stop_ceph and delete_osd_dev" + else + stop_ceph + delete_osd_dev + fi # purge ceph config file and keys $SUDO rm -f ${CEPH_CONF_DIR}/* if is_ceph_enabled_for_service nova; then diff --git a/devstack/override-defaults b/devstack/override-defaults index 18afcd6..aa80ef1 100644 --- a/devstack/override-defaults +++ b/devstack/override-defaults @@ -20,3 +20,4 @@ if [[ $ENABLE_CEPH_CINDER == "True" ]]; then fi CEPHADM_DEPLOY=$(trueorfalse False CEPHADM_DEPLOY) +REMOTE_CEPH=$(trueorfalse False REMOTE_CEPH) diff --git a/devstack/plugin.sh b/devstack/plugin.sh index c6063f1..238e64f 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -40,10 +40,14 @@ elif [[ "$1" == "stack" && "$2" == "pre-install" ]]; then fi fi elif [[ "$1" == "stack" && "$2" == "install" ]]; then - if [[ "$CEPHADM_DEPLOY" = "True" ]]; then + if [[ "$CEPHADM_DEPLOY" = "True" && "$REMOTE_CEPH" = "False" ]]; then # Perform installation of service source echo_summary "[cephadm] Installing ceph" install_ceph + set_min_client_version + elif [[ "$CEPHADM_DEPLOY" = "True" && "$REMOTE_CEPH" = "True" ]]; then + echo "[CEPHADM] Remote Ceph: Skipping install" + get_cephadm else # FIXME(melwitt): This is a hack to get around a namespacing issue with # Paste and PasteDeploy. For stable/queens, we use the Pike UCA packages