238 lines
9.8 KiB
Bash
238 lines
9.8 KiB
Bash
#!/usr/bin/env bash
|
||
|
||
### 需要修改以下的内容 ###
|
||
### 需要修改以下的内容 ###
|
||
### 需要修改以下的内容 ###
|
||
|
||
# 理论上来说,能访问公网的服务器 用来部署Harbor服务器
|
||
# 所有的主机均可以访问公网的话,填写 除了harbor服务器的 其他所有主机的地址
|
||
PrivateServerIPs=(10.215.125.15 10.215.125.16 10.215.125.17) # 内网服务器的IP地址,不包括可以访问公网IP的服务器
|
||
|
||
### 需要修改以上的内容 ###
|
||
### 需要修改以上的内容 ###
|
||
### 需要修改以上的内容 ###
|
||
|
||
RED="31m" ## 姨妈红
|
||
GREEN="32m" ## 水鸭青
|
||
YELLOW="33m" ## 鸭屎黄
|
||
PURPLE="35m" ## 基佬紫
|
||
BLUE="36m" ## 天依蓝
|
||
|
||
colorEcho() {
|
||
# shellcheck disable=SC2145
|
||
echo -e "\033[${1}${@:2}\033[0m" 1>&2
|
||
}
|
||
|
||
check_root() {
|
||
if [[ $EUID != 0 ]]; then
|
||
colorEcho ${RED} "当前非root账号(或没有root权限),无法继续操作,请更换root账号!"
|
||
colorEcho ${YELLOW} "使用sudo -命令获取临时root权限(执行后可能会提示输入root密码)"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
startFunc(){
|
||
colorEcho ${PURPLE} "---------------------------------------------------------------------------------"
|
||
colorEcho ${BLUE} "开始执行 启动RKE集群的操作 ………"
|
||
echo ""
|
||
|
||
colorEcho ${BLUE} "本脚本的运行有一些列的前提依赖,请确定以下的项目都已完成!!!!"
|
||
colorEcho ${YELLOW} "----------------------------------------------------------"
|
||
colorEcho ${RED} "1. 完成基础环境初始化,将rke系统镜像均上传至私有Harbor中!"
|
||
colorEcho ${RED} "2. 配置并修改好 rke集群的模板文件,命名为 cluster.yml !!"
|
||
colorEcho ${RED} "3. ……"
|
||
colorEcho ${YELLOW} "----------------------------------------------------------"
|
||
|
||
while true; do
|
||
colorEcho ${RED} "请确保您已经将上述的项目完成!!"
|
||
read -r -p "请输入yes进行确认,脚本才可继续运行!!" input
|
||
case $input in
|
||
yes)
|
||
colorEcho ${GREEN} "您已确认上述的项目均已完成!!"
|
||
colorEcho ${GREEN} "----------------------------------------------------------"
|
||
echo ""
|
||
colorEcho ${BLUE} "开始执行 RKE集群的启动过程!!!"
|
||
echo ""
|
||
main
|
||
break
|
||
;;
|
||
*)
|
||
echo ""
|
||
colorEcho ${RED} "输入有误!!! 请输入 >> yes << 进行确认"
|
||
break
|
||
colorEcho ${RED} "-----------------------------------------------------"
|
||
echo ""
|
||
;;
|
||
esac
|
||
done
|
||
}
|
||
|
||
installRKE(){
|
||
colorEcho ${PURPLE} "---------------------------------------------------------------------------------"
|
||
colorEcho ${BLUE} "开始下载并安装 RKE 工具 ………"
|
||
echo ""
|
||
|
||
colorEcho ${BLUE} "开始从rancher镜像下载rke工具……"
|
||
wget http://rancher-mirror.cnrancher.com/rke/v1.2.6/rke_linux-amd64
|
||
if [ -s rke_linux-amd64 ]; then
|
||
colorEcho ${GREEN} "rke工具下载完成!"
|
||
chmod +x rke_linux-amd64
|
||
mv ./rke_linux-amd64 /usr/local/bin/rke
|
||
colorEcho ${GREEN} "----------------------------------------------------------"
|
||
rke --version
|
||
colorEcho ${GREEN} "----------------------------------------------------------"
|
||
rke config --list-version --all
|
||
echo ""
|
||
colorEcho ${BLUE} "开始从rancher镜像下载 kubectl 工具……"
|
||
wget http://rancher-mirror.cnrancher.com/kubectl/v1.20.4/linux-amd64-v1.20.4-kubectl
|
||
chmod +x linux-amd64-v1.20.4-kubectl
|
||
mv linux-amd64-v1.20.4-kubectl /usr/local/bin/kubectl
|
||
colorEcho ${GREEN} "----------------------------------------------------------"
|
||
kubectl version
|
||
colorEcho ${GREEN} "----------------------------------------------------------"
|
||
else
|
||
colorEcho ${RED} "rke工具下载失败!!!脚本无法继续运行,请手动下载rke工具!"
|
||
colorEcho ${RED} "rke工具下载失败!!!脚本无法继续运行,请手动下载rke工具!"
|
||
colorEcho ${RED} "rke工具下载失败!!!脚本无法继续运行,请手动下载rke工具!"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
createRKEInstallerUser(){
|
||
colorEcho ${PURPLE} "---------------------------------------------------------------------------------"
|
||
colorEcho ${BLUE} "开始创建 rke-installer 用户………"
|
||
echo ""
|
||
useradd rke-installer
|
||
echo "SuperRke.123
|
||
SuperRke.123
|
||
" | passwd rke-installer
|
||
#将登陆用户develop加入到docker用户组中
|
||
gpasswd -a rke-installer docker
|
||
#更新用户组
|
||
newgrp docker
|
||
echo ""
|
||
if [ -d /home/rke-installer ]; then
|
||
colorEcho ${GREEN} "rke-installer 用户创建成功!! "
|
||
echo ""
|
||
else
|
||
mkdir -p /home/rke-installer
|
||
chown rke-installer:rke-installer -R /home/rke-installer
|
||
usermod -d /home/rke-installer rke-installer
|
||
colorEcho ${YELLOW} "检测到 rke-installer 用户已经存在"
|
||
fi
|
||
|
||
if [[ -s cluster.yaml || -s cluster.yml ]]; then
|
||
colorEcho ${BLUE} "开始将 cluster.yaml文件复制到 rke-installer目录下…………"
|
||
mv cluster.y* /home/rke-installer/cluster.yml
|
||
if [ -s /home/rke-installer/cluster.yml ]; then
|
||
colorEcho ${BLUE} "cluster.yml文件已经放置完成!"
|
||
chown rke-installer:rke-installer /home/rke-installer/cluster.yml
|
||
else
|
||
colorEcho ${RED} "当前目录下未检测到 rke集群的模板文件!!"
|
||
colorEcho ${RED} "程序无法继续,将退出!!"
|
||
return 1
|
||
fi
|
||
else
|
||
colorEcho ${RED} "当前目录下未检测到 rke集群的模板文件!!"
|
||
colorEcho ${RED} "程序无法继续,将退出!!"
|
||
echo ""
|
||
colorEcho ${YELLOW} "--------------------------------------------------"
|
||
colorEcho ${RED} "请创建RKE集群的模板文件,并命名为 cluster.yml "
|
||
colorEcho ${RED} "请创建RKE集群的模板文件,并命名为 cluster.yml "
|
||
colorEcho ${RED} "请创建RKE集群的模板文件,并命名为 cluster.yml "
|
||
colorEcho ${YELLOW} "--------------------------------------------------"
|
||
return 1
|
||
fi
|
||
|
||
colorEcho ${BLUE} "开始切换当前用户至 rke-installer "
|
||
su rke-installer
|
||
echo ""
|
||
colorEcho ${BLUE} "请检查rke-installer用户能否执行 docker ps 命令!!"
|
||
docker ps
|
||
colorEcho ${BLUE} "----------------------------------------------------------"
|
||
}
|
||
|
||
generateRKEUserKey(){
|
||
colorEcho ${PURPLE} "---------------------------------------------------------------------------------"
|
||
colorEcho ${BLUE} "开始创建 rke-installer用户的 ssh key ……"
|
||
echo ""
|
||
su rke-installer
|
||
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
|
||
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
||
chmod 600 ~/.ssh/authorized_keys
|
||
colorEcho ${GREEN} "--------------------------------------------------------------"
|
||
colorEcho ${GREEN} "-----------本机配置完成!-------------"
|
||
echo ""
|
||
|
||
for ip in "${PrivateServerIPs[@]}"; do
|
||
colorEcho ${BLUE} "请手动将如下的命令,以 root 权限在主机 ${ip} 上运行"
|
||
colorEcho ${BLUE} "请手动将如下的命令,以 root 权限在主机 ${ip} 上运行"
|
||
colorEcho ${BLUE} "请手动将如下的命令,以 root 权限在主机 ${ip} 上运行"
|
||
colorEcho ${BLUE} "-----------------------------------------------"
|
||
echo ""
|
||
echo ""
|
||
colorEcho ${RED} " 请以 root 角色 运行!!! "
|
||
colorEcho ${RED} " 请以 root 角色 运行!!! "
|
||
colorEcho ${RED} " 请以 root 角色 运行!!! "
|
||
echo ""
|
||
colorEcho ${YELLOW} "useradd rke-installer && echo \"rke-installer
|
||
rke-installer
|
||
\" | passwd rke-installer && gpasswd -a rke-installer docker && newgrp docker && su rke-installer && docker ps "
|
||
echo ""
|
||
colorEcho ${YELLOW} "clear && ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa && echo \"$(cat ~/.ssh/id_rsa.pub)\" >> ~/.ssh/authorized_keys && echo \"\" && cat ~/.ssh/authorized_keys"
|
||
echo ""
|
||
echo ""
|
||
while true; do
|
||
colorEcho ${RED} "请确保您已经将上述的命令在主机${ip}上执行了!!"
|
||
read -r -p "请输入yes进行确认,脚本才可继续运行!!" input
|
||
case $input in
|
||
yes)
|
||
colorEcho ${GREEN} "您已确认在主机${ip}上添加了私有的ssh key!"
|
||
echo ""
|
||
break
|
||
;;
|
||
*)
|
||
echo ""
|
||
colorEcho ${RED} "输入有误!!! 请输入 >> yes << 进行确认"
|
||
colorEcho ${RED} "请在主机${ip}上执行上述命令!!!"
|
||
colorEcho ${RED} "否则本脚本的功能会失效!!"
|
||
colorEcho ${RED} "-----------------------------------------------------"
|
||
echo ""
|
||
;;
|
||
esac
|
||
done
|
||
done
|
||
}
|
||
|
||
startRKECLuster(){
|
||
colorEcho ${PURPLE} "---------------------------------------------------------------------------------"
|
||
colorEcho ${BLUE} "开始 启动 rke集群 !!!"
|
||
colorEcho ${BLUE} "开始 启动 rke集群 !!!"
|
||
colorEcho ${BLUE} "开始 启动 rke集群 !!!"
|
||
echo ""
|
||
if [[ $(pwd) == "/home/rke-installer" ]]; then
|
||
colorEcho ${BLUE} "检测到当前目录为 /home/rke-installer"
|
||
echo ""
|
||
colorEcho ${BLUE} "开始执行 RKE 集群的启动过程 !!!"
|
||
colorEcho ${BLUE} "-------------------------------------------------------------"
|
||
for i in {3..1..-1}; do
|
||
colorEcho ${BLUE} "倒计时开始 ->> $i 秒 <<-,准备启动RKE,上文的日志输出将会消失!!"
|
||
sleep 2
|
||
done
|
||
clear
|
||
rke up
|
||
else
|
||
colorEcho ${BLUE} "当前目录不为 /home/rke-installer,开始跳转目录!"
|
||
cd /home/rke-installer
|
||
startRKECLuster
|
||
fi
|
||
}
|
||
|
||
main(){
|
||
check_root
|
||
installRKE || return $?
|
||
generateRKEUserKey || return $?
|
||
startRKECLuster || return $?
|
||
}
|
||
|
||
startFunc |