]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm/box: Wrap ceph docker and add some util scripts
authorPere Diaz Bou <pdiazbou@redhat.com>
Thu, 23 Sep 2021 11:12:09 +0000 (13:12 +0200)
committerPere Diaz Bou <pdiazbou@redhat.com>
Mon, 18 Oct 2021 15:12:55 +0000 (17:12 +0200)
Signed-off-by: Pere Diaz Bou <pdiazbou@redhat.com>
src/cephadm/box/Dockerfile
src/cephadm/box/docker-compose.yml
src/cephadm/box/docker/ceph/Dockerfile [new file with mode: 0644]
src/cephadm/box/setup_loop.sh [new file with mode: 0755]
src/cephadm/box/setup_ssh.sh [new file with mode: 0755]
src/cephadm/box/start

index 210e5517676f7385043aaa3c49617528ad6fc13a..5b7a48045ecda705a864fcb1b052167609a07ffe 100644 (file)
@@ -21,6 +21,10 @@ RUN dnf -y install docker-ce && \
   dnf clean all && systemctl enable docker
 
 
+EXPOSE 8443
+
+RUN dnf install sudo which -y
+
 FROM centos-systemd-docker
 WORKDIR /root
 COPY start /usr/local/bin
index f012232294e4296d9c5a97a5841a0606ad8dc476..f55d2d286da7c112ed9333a359056a045f7d6d2d 100644 (file)
@@ -18,10 +18,16 @@ services:
       - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
     networks:
       - public
+    mem_limit: "20g"
+    devices:
+      - /dev/loop0:/dev/ttt:rwm
     scale: -1
   seed:
     extends:
       service: cephadm-host-base
+    volumes:
+      - ../../../:/ceph
+      - ..:/cephadm
     ports:
       - "3000:3000"
       - "8443:8443"
diff --git a/src/cephadm/box/docker/ceph/Dockerfile b/src/cephadm/box/docker/ceph/Dockerfile
new file mode 100644 (file)
index 0000000..5aafd22
--- /dev/null
@@ -0,0 +1,4 @@
+FROM quay.ceph.io/ceph-ci/ceph:master
+RUN dnf install which sudo -y
+
+EXPOSE 8443
diff --git a/src/cephadm/box/setup_loop.sh b/src/cephadm/box/setup_loop.sh
new file mode 100755 (executable)
index 0000000..1e8ef95
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+set -x
+
+# This script works best outside docker right now.
+
+# TODO: remove this file in the future or extend with something more extensible.
+# For now let's just use this.
+
+# look for an available loop device
+avail_loop=$(sudo losetup -f)
+loop_name=$(basename -- $avail_loop)
+
+# in case we have to create the loop, find the minor device number.
+num_loops=$(lsmod | grep loop | awk '{print $3}')
+num_loops=$((num_loops + 1))
+echo creating loop $avail_loop minor: $num_loops
+mknod $avail_loop b 7 $num_loops
+sudo umount $avail_loop
+sudo losetup -d $avail_loop
+mkdir -p loop-images
+sudo fallocate -l 10G "loop-images/disk${loop_name}.img"
+sudo losetup $avail_loop "loop-images/disk${loop_name}.img"
+sudo wipefs -a $avail_loop
+
+
+# TODO: We will need more than one LVs
+sudo lvm lvremove /dev/vg1/lv1
+sudo lvm vgremove vg1
+sudo pvcreate $avail_loop
+sudo vgcreate vg1 $avail_loop
+# 6G is arbitrary, osds need 5 I think. Just in case.
+sudo lvcreate --size 6G --name lv1 vg1
diff --git a/src/cephadm/box/setup_ssh.sh b/src/cephadm/box/setup_ssh.sh
new file mode 100755 (executable)
index 0000000..f680feb
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# SSH
+if [[ ! -f "/root/.ssh/id_rsa" ]]; then
+       mkdir -p ~/.ssh
+       chmod 700 ~/.ssh
+       ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ""
+fi
+
+cat ~/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
+if [[ ! -f "/root/.ssh/known_hosts" ]]; then
+       ssh-keygen -A
+fi
+dnf install -y openssh-server
+/usr/sbin/sshd
+
+# no password
+echo "root:" | chpasswd
+echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
index 5ca5c6847419f532fdbcdf5f59be554637896a2f..32d15113504dbf92b6342d9e3b84e556b36c5012 100755 (executable)
@@ -2,10 +2,10 @@
 set -euxo pipefail
 CEPHADM_PATH=/usr/local/sbin/cephadm
 
-curl --silent \
-  --location "https://github.com/ceph/ceph/raw/${CEPH_BRANCH:-master}/src/cephadm/cephadm" \
-  --output $CEPHADM_PATH \
-  && chmod +x $CEPHADM_PATH
+dnf install which sudo -y
+
+cp /cephadm/cephadm $CEPHADM_PATH
+chmod +x $CEPHADM_PATH
 
 tail -f /var/log/ceph/cephadm.log 1>&2 &
 
@@ -14,9 +14,20 @@ if [[ -n "${SHARED_CEPH_FOLDER-}" ]]; then
     EXTRA_ARGS+=(--shared_ceph_folder "$SHARED_CEPH_FOLDER")
 fi
 
+# TODO: remove docker build image and skill pull when cephadm's dependencies
+# use which or it is removed.
+# If we use a ceph image cephadm won't skip pulling the image. If it's a
+# local image, it will fail.
+docker build -t quay.ceph.io/ceph-ci/ceph:master /cephadm/box/docker/ceph
+CEPHADM_IMAGE=quay.ceph.io/ceph-ci/ceph:master
+if [[ -n "$CEPHADM_IMAGE" ]]; then
+       EXTRA_ARGS+=--skip-pull
+fi
+
 $CEPHADM_PATH bootstrap \
   --mon-ip "$(hostname -i)" \
   --allow-fqdn-hostname \
   --initial-dashboard-password admin \
   --dashboard-password-noupdate \
+  --allow-overwrite \
   "${EXTRA_ARGS[@]}"