ubuntu22.04一键部署ceph-v17.2.3集群脚本(cephadm方式)
Ubuntu 22.04 LTS
docker-v20.10.17
ceph1 ceph2 ceph3 ceph4 ceph5
磁盘:2T*3=6T(共30T)
ssh-keygen
for i in ceph{1..5}; do echo ">>> $i";ssh-copy-id root@$i;done
wget https://github.com/ceph/ceph/raw/v17.2.3/src/cephadm/cephadm
chmod +x cephadm
一键通用安装脚本
cat > ceph-v17.2.3.sh << 'eof'
#!/bin/bash
ceph1_ip=192.168.1.204
# 1、安装 docker
echo -e "\e[32;5m[=====♫ ♬ ♪ ♩ ♭ ♪ の 安装 docker の ♪ ♭ ♩ ♪ ♬ ♫=====]\e[0m"
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
for i in ${@:2};do
echo -e "\e[32;5m>>> $i\e[0m";
scp /etc/apt/keyrings/docker.gpg root@$i:/etc/apt/keyrings;
done
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
for i in ${@:2};do
echo -e "\e[32;5m>>> $i\e[0m";
scp /etc/apt/sources.list.d/docker.list root@$i:/etc/apt/sources.list.d;
done
for i in $@;do
echo -e "\e[32;5m>>> $i\e[0m";
ssh root@$i "apt update && apt install docker-ce -y";
done
# 2、cephadm-v17.2.3安装ceph集群
echo -e "\e[32;5m[=====♫ ♬ ♪ ♩ ♭ ♪ の cephadm-v17.2.3安装ceph集群 の ♪ ♭ ♩ ♪ ♬ ♫=====]\e[0m"
# wget https://github.com/ceph/ceph/raw/v17.2.3/src/cephadm/cephadm
grep quay.io cephadm |awk '{print $3}' |xargs -i docker pull {}
docker save -o ceph-v17.tar quay.io/ceph/ceph:v17
for i in ${@:2}; do echo ">>> $i";scp /root/ceph-v17.tar root@$i:/root; done
for i in ${@:2}; do echo ">>> $i";ssh root@$i "ls /root |xargs -i docker load -i {}";done
./cephadm bootstrap --mon-ip $ceph1_ip | tee ceph-init.log
apt install ceph-common=17.2.0-0ubuntu0.22.04.1 -y
for i in ${@:2};do
echo -e "\e[32;5m>>> $i\e[0m";
ssh-copy-id -f -i /etc/ceph/ceph.pub root@$i;
done
for i in ${@:2};do
echo -e "\e[32;5m>>> $i\e[0m";
ceph orch host add $i;
done
ceph orch apply osd --all-available-devices
eof
bash ceph-v17.2.3.sh ceph1 ceph2 ceph3 ceph4 ceph5
===
ceph orch host ls
ceph orch device ls
$ a=(1 2 3)
$ echo "${a[@]:1}"
2 3
cat > test.sh << 'EOF'
node=$1
for i in ${node[*]};do
echo -e "\e[32;5m>>> $i\e[0m";
ping -c2 qq.com;
done
EOF
bash test.sh "ceph1 ceph2 ceph3 ceph3 ceph4 ceph5"
node=$1
for i in ${node[*]};
bash test.sh "ceph1 ceph2 ceph3 ceph3 ceph4 ceph5"
bash test.sh 'ceph1 ceph2 ceph3 ceph3 ceph4 ceph5'
# 需要单引号、双引号
cat > test.sh << 'EOF'
for i in ${@:2};do
echo -e "\e[32;5m>>> $i\e[0m";
ping -c2 qq.com;
done
EOF
bash test.sh ceph1 ceph2 ceph3 ceph3 ceph4 ceph5
for i in $@;
for i in ${@:2};
bash test.sh ceph1 ceph2 ceph3 ceph3 ceph4 ceph5
# 不需要单引号、双引号