#!/usr/bin/env bash # Install Rook-Ceph operator + cluster + CloudHost bucket extras. # Usage: ./scripts/install.sh [single-node|multi-node] set -euo pipefail PROFILE="${1:-single-node}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CHART_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" ROOK_NS="rook-ceph" EXTRAS_NS="cloudhost-builds" CLUSTER_VALUES="${CHART_DIR}/values-rook-cluster-${PROFILE}.yaml" if [[ ! -f "${CLUSTER_VALUES}" ]]; then echo "Unknown profile: ${PROFILE} (missing ${CLUSTER_VALUES})" >&2 exit 1 fi echo "==> Profile: ${PROFILE}" echo "==> Adding rook-release helm repo" helm repo add rook-release https://charts.rook.io/release 2>/dev/null || true helm repo update rook-release echo "==> [1/4] Installing Rook operator in ${ROOK_NS}" helm upgrade --install rook-ceph rook-release/rook-ceph \ --namespace "${ROOK_NS}" \ --create-namespace \ --wait \ --timeout 10m echo "==> [2/4] Waiting for Rook operator deployment" kubectl -n "${ROOK_NS}" rollout status deploy/rook-ceph-operator --timeout=300s echo "==> [3/4] Installing Ceph cluster (${CLUSTER_VALUES})" helm upgrade --install rook-ceph-cluster rook-release/rook-ceph-cluster \ --namespace "${ROOK_NS}" \ -f "${CLUSTER_VALUES}" \ --wait \ --timeout 25m echo "==> Waiting for CephCluster phase = Ready (up to 20 min)" "${SCRIPT_DIR}/wait-ceph-ready.sh" 1200 echo "==> [4/4] Installing CloudHost Ceph extras (ObjectBucketClaim) in ${EXTRAS_NS}" kubectl create namespace "${EXTRAS_NS}" 2>/dev/null || true helm upgrade --install cloudhost-ceph "${CHART_DIR}" \ --namespace "${EXTRAS_NS}" \ -f "${CHART_DIR}/values.yaml" \ --wait \ --timeout 15m echo "" echo "==> Done. Run ./scripts/verify.sh to confirm health and print integration hints."