]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/ci/cephadm/start-cluster.sh
f3490d7a3ac738b9d45281f9c8f7dfd0745c6c44
[ceph.git] / ceph / src / pybind / mgr / dashboard / ci / cephadm / start-cluster.sh
1 #!/usr/bin/env bash
2
3 set -eEx
4
5 on_error() {
6 set +x
7 if [ "$1" != "0" ]; then
8 echo "ERROR $1 thrown on line $2"
9 echo
10 echo "Collecting info..."
11 echo
12 echo "Saving MGR logs:"
13 echo
14 mkdir -p ${CEPH_DEV_FOLDER}/logs
15 kcli ssh -u root -- ceph-node-00 'cephadm logs -n \$(cephadm ls | grep -Eo "mgr\.ceph[0-9a-z.-]+" | head -n 1) -- --no-tail --no-pager' > ${CEPH_DEV_FOLDER}/logs/mgr.cephadm.log
16 for vm_id in {0..3}
17 do
18 local vm="ceph-node-0${vm_id}"
19 echo "Saving journalctl from VM ${vm}:"
20 echo
21 kcli ssh -u root -- ${vm} 'journalctl --no-tail --no-pager -t cloud-init' > ${CEPH_DEV_FOLDER}/logs/journal.ceph-node-0${vm_id}.log || true
22 echo "Saving container logs:"
23 echo
24 kcli ssh -u root -- ${vm} 'podman logs --names --since 30s \$(podman ps -aq)' > ${CEPH_DEV_FOLDER}/logs/container.ceph-node-0${vm_id}.log || true
25 done
26 echo "TEST FAILED."
27 fi
28 }
29
30 trap 'on_error $? $LINENO' ERR
31
32 sed -i '/ceph-node-/d' $HOME/.ssh/known_hosts || true
33
34 : ${CEPH_DEV_FOLDER:=${PWD}}
35 EXTRA_PARAMS=''
36 DEV_MODE=''
37 # Check script args/options.
38 for arg in "$@"; do
39 shift
40 case "$arg" in
41 "--dev-mode") DEV_MODE='true'; EXTRA_PARAMS+=" -P dev_mode=${DEV_MODE}" ;;
42 "--expanded") EXTRA_PARAMS+=" -P expanded_cluster=true" ;;
43 esac
44 done
45
46 kcli delete plan -y ceph || true
47
48 # Build dashboard frontend (required to start the module).
49 cd ${CEPH_DEV_FOLDER}/src/pybind/mgr/dashboard/frontend
50 export NG_CLI_ANALYTICS=false
51 if [[ -n "$JENKINS_HOME" ]]; then
52 npm cache clean --force
53 fi
54 npm ci
55 FRONTEND_BUILD_OPTS='--configuration=production'
56 if [[ -n "${DEV_MODE}" ]]; then
57 FRONTEND_BUILD_OPTS+=' --deleteOutputPath=false --watch'
58 fi
59 npm run build ${FRONTEND_BUILD_OPTS} &
60
61 cd ${CEPH_DEV_FOLDER}
62 : ${VM_IMAGE:='fedora36'}
63 : ${VM_IMAGE_URL:='https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/36/Cloud/x86_64/images/Fedora-Cloud-Base-36-1.5.x86_64.qcow2'}
64 kcli download image -p ceph-dashboard -u ${VM_IMAGE_URL} ${VM_IMAGE}
65 kcli delete plan -y ceph || true
66 kcli create plan -f src/pybind/mgr/dashboard/ci/cephadm/ceph_cluster.yml \
67 -P ceph_dev_folder=${CEPH_DEV_FOLDER} \
68 ${EXTRA_PARAMS} ceph
69
70 : ${CLUSTER_DEBUG:=0}
71 : ${DASHBOARD_CHECK_INTERVAL:=10}
72 while [[ -z $(kcli ssh -u root -- ceph-node-00 'journalctl --no-tail --no-pager -t cloud-init' | grep "kcli boot finished") ]]; do
73 sleep ${DASHBOARD_CHECK_INTERVAL}
74 kcli list vm
75 if [[ ${CLUSTER_DEBUG} != 0 ]]; then
76 kcli ssh -u root -- ceph-node-00 'podman ps -a'
77 kcli ssh -u root -- ceph-node-00 'podman logs --names --since 30s \$(podman ps -aq)'
78 fi
79 kcli ssh -u root -- ceph-node-00 'journalctl -n 100 --no-pager -t cloud-init'
80 done