已合并
chore(ceph): add openEuler 24.03-LTS-SP4 support #2831
chore(ceph): add openEuler 24.03-LTS-SP4 support #2831
已合并
yanzhicong1创建于 7月9日
5 个文件变更+133-3
@@ -0,0 +1,54 @@
1+ARG BASE=openeuler/openeuler:24.03-lts-sp4
2+FROM $BASE as builder
3+ARG VERSION=20.3.0
4+ 
5+RUN dnf update -y \
6+ && dnf install -y \
7+ git gcc-c++ ninja-build cmake python3-sphinx \
8+ libibverbs libibverbs-devel rdma-core rdma-core-devel \
9+ systemd-devel libblkid-devel keyutils-libs-devel \
10+ openldap-devel cryptsetup-devel python3-pip \
11+ autoconf automake libtool ocaml ocaml-devel \
12+ libatomic librdkafka librdkafka-devel \
13+ gnutls-devel libxml2-devel glib2-devel \
14+ libev-devel fuse3-devel bash-completion \
15+ ocaml-findlib python3-devel golang rust cargo \
16+ libaio libaio-devel sqlite sqlite-devel \
17+ snappy snappy-devel lz4 lz4-devel curl-devel \
18+ expat-devel liboath liboath-devel lttng-ust lttng-ust-devel \
19+ babeltrace libbabeltrace-devel libicu libicu-devel \
20+ thrift-devel libcap-devel lua-devel \
21+ libcap-ng libcap-ng-devel gperf lmdb lmdb-devel \
22+ librabbitmq librabbitmq-devel python3-pyyaml \
23+ numactl-devel make python nasm \
24+ && dnf clean all
25+ 
26+RUN python3 -m pip install --upgrade pip \
27+ && python3 -m pip install cython prettytable
28+ 
29+WORKDIR /opt
30+ 
31+RUN git clone https://gitlab.com/nbdkit/libnbd.git \
32+ && cd libnbd \
33+ && autoreconf -fi \
34+ && ./configure \
35+ && make -j$(nproc) \
36+ && make install \
37+ && cd .. \
38+ && rm -rf libnbd
39+ 
40+RUN git clone -b v${VERSION} --recursive --depth 1 https://github.com/ceph/ceph.git \
41+ && cd ceph \
42+ && ./do_cmake.sh -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=OFF \
43+ && cd build \
44+ && ninja -j$(nproc) \
45+ && ninja install
atomgit-bot
atomgit-botatomgit-bot7月9日

🟡 Medium Priority

建议:在 ninja install 之后添加清理步骤,删除源码目录中不被 entrypoint.sh 需要的文件(至少删除 .git 目录)。推荐追加 && rm -rf .git 或移到独立 RUN 层中执行清理,与 libnbd 处理方式保持一致。

likedislike
46+ 
47+ENV LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
48+ 
49+COPY --chmod=755 entrypoint.sh /opt/ceph/entrypoint.sh
50+ 
51+WORKDIR /opt/ceph
52+ 
53+ENTRYPOINT [ "./entrypoint.sh" ]
54+ 
@@ -0,0 +1,72 @@
1+#!/bin/bash
2+set -e
3+ 
4+CEPH_SRC_DIR=$(pwd)
5+BUILD_DIR="$CEPH_SRC_DIR/build"
6+CLUSTER_DIR="$CEPH_SRC_DIR/ceph-cluster"
7+ETC_DIR="$CLUSTER_DIR/etc"
8+LIB_DIR="$CLUSTER_DIR/lib"
9+LOG_DIR="$CLUSTER_DIR/log"
10+ 
11+MON_NAME="mon1"
12+MON_IP="127.0.0.1"
13+FSID=$(uuidgen)
14+ 
15+echo "[*] Using FSID: $FSID"
16+echo "[*] Working directory: $CEPH_SRC_DIR"
17+ 
18+echo "[*] Cleaning up previous state..."
19+pkill -9 ceph-mon || true
20+rm -rf "$CLUSTER_DIR"
21+rm -f /var/run/ceph/ceph-mon.$MON_NAME.asok
22+ 
23+mkdir -p "$ETC_DIR" "$LIB_DIR/mon/$MON_NAME" "$LOG_DIR"
24+ 
25+cat > "$ETC_DIR/ceph.conf" <<EOF
26+[global]
27+fsid = $FSID
28+mon_initial_members = $MON_NAME
29+mon_host = $MON_IP
30+auth_cluster_required = cephx
31+auth_service_required = cephx
32+auth_client_required = cephx
33+log_to_file = true
34+log_file = $LOG_DIR/ceph.log
35+log_to_stderr = false
36+run_dir = /var/run/ceph
37+mon_data = $LIB_DIR/mon/\$id
38+osd_data = $LIB_DIR/osd/\$id
39+# Critical fix: Specify keyring paths
40+keyring = $ETC_DIR/ceph.client.admin.keyring
41+mon_keyring = $ETC_DIR/ceph.mon.keyring
42+EOF
43+ 
44+echo "[*] Generating keys..."
45+"$BUILD_DIR/bin/ceph-authtool" --create-keyring "$ETC_DIR/ceph.mon.keyring" --gen-key -n mon. --cap mon 'allow *'
46+"$BUILD_DIR/bin/ceph-authtool" --create-keyring "$ETC_DIR/ceph.client.admin.keyring" --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mgr 'allow *'
47+"$BUILD_DIR/bin/ceph-authtool" "$ETC_DIR/ceph.mon.keyring" --import-keyring "$ETC_DIR/ceph.client.admin.keyring"
48+ 
49+echo "[*] Generating monmap..."
50+"$BUILD_DIR/bin/monmaptool" --clobber --create --add "$MON_NAME" "$MON_IP" --fsid "$FSID" "$ETC_DIR/monmap"
51+ 
52+echo "[*] Initializing monitor..."
53+"$BUILD_DIR/bin/ceph-mon" --mkfs -i "$MON_NAME" --monmap "$ETC_DIR/monmap" --keyring "$ETC_DIR/ceph.mon.keyring" --conf "$ETC_DIR/ceph.conf"
54+ 
55+echo "[*] Starting monitor..."
56+"$BUILD_DIR/bin/ceph-mon" -i "$MON_NAME" \
57+ --conf "$ETC_DIR/ceph.conf" \
58+ --keyring "$ETC_DIR/ceph.mon.keyring" &
59+ 
60+sleep 3
61+ 
62+if ! pgrep -f "ceph-mon.*$MON_NAME" >/dev/null; then
63+ echo "[!] Error: ceph-mon process failed to start! Check logs: $LOG_DIR/ceph.log"
64+ exit 1
65+fi
66+ 
67+echo "[*] Cluster status:"
68+"$BUILD_DIR/bin/ceph" -s \
69+ --conf "$ETC_DIR/ceph.conf" \
70+ --keyring "$ETC_DIR/ceph.client.admin.keyring"
71+ 
72+echo "[+] Successfully started single-node Ceph cluster!"
@@ -18,6 +18,7 @@ The tag of each `ceph` docker image is consist of the version of `ceph` and the
18 18 
19| Tag | Currently | Architectures |19| Tag | Currently | Architectures |
20|----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|---------------|20|----------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|---------------|
21+|[20.3.0-oe2403sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp4/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP4 | amd64, arm64 |
21|[20.3.0-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp2/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP2 | amd64, arm64 |22|[20.3.0-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp2/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP2 | amd64, arm64 |
22| [20.3.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp1/Dockerfile) | Ceph 20.3.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 |23| [20.3.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp1/Dockerfile) | Ceph 20.3.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 |
23 24 
@@ -38,4 +39,4 @@ In this usage, users can select the corresponding `{Tag}` based on their require
38 The `openeuler/ceph` image is used to verify the integration between the upstream ceph version and openEuler. 39 The `openeuler/ceph` image is used to verify the integration between the upstream ceph version and openEuler.
39 40 
40# Question and answering41# Question and answering
41-If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images).42+If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images).
@@ -11,6 +11,7 @@ tags: |
11 11 
12 | Tag | Currently | Architectures |12 | Tag | Currently | Architectures |
13 |----------|-------------|------------------|13 |----------|-------------|------------------|
14+ |[20.3.0-oe2403sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp4/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP4 | amd64, arm64 |
14 |[20.3.0-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp2/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP2 | amd64, arm64 |15 |[20.3.0-oe2403sp2](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp2/Dockerfile) | ceph 20.3.0 on openEuler 24.03-LTS-SP2 | amd64, arm64 |
15 |[20.3.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp1/Dockerfile)| Ceph 20.3.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 |16 |[20.3.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Storage/ceph/20.3.0/24.03-lts-sp1/Dockerfile)| Ceph 20.3.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 |
16 17 
@@ -38,4 +39,4 @@ dependency:
38 - librados39 - librados
39 - openssl40 - openssl
40 - libcurl41 - libcurl
41- - systemd42+ - systemd
@@ -2,4 +2,6 @@
2 path: 20.3.0/24.03-lts-sp1/Dockerfile2 path: 20.3.0/24.03-lts-sp1/Dockerfile
3 3 
420.3.0-oe2403sp2:420.3.0-oe2403sp2:
5- path: 20.3.0/24.03-lts-sp2/Dockerfile5+ path: 20.3.0/24.03-lts-sp2/Dockerfile
6+20.3.0-oe2403sp4:
7+ path: 20.3.0/24.03-lts-sp4/Dockerfile