ADD file via upload

master
m293exb8n 4 years ago
parent 07943a2b8b
commit e0a8457e67

@ -0,0 +1,348 @@
#!/bin/bash
##
##
set -u
echo -e "\033[32m#######检测系统版本#######################################################\033[0m"
linux_ver=$(cat /etc/redhat-release)
linux_ver1=$(cat /etc/redhat-release | awk -F ' ' {'print $4'})
if [[ $linux_ver = "CentOS Linux release 7.6.1810 (Core) " ]];then
echo "系统版本为:$linux_ver,符合安装要求!"
else
echo "系统版本为:$linux_ver,不符合安装要求!"
exit 1
fi
sleep 3
##倒计时函数
dtime() {
for t in {6..0}
do
echo -n "--$1 after $t seconds!--"
echo -ne "\r\r"
sleep 1
done
}
Home="/home"
run_dir="/home/Edu_devops"
#Edu_devops_file=$(ls -l /home/ | grep 'edu-coder-devops' | awk {'print $9'})
#Data_file=$(ls -l /home/ | grep 'Data_edu_devops' | awk {'print $9'})
#kczy_file=$(ls -l /home/ | grep 'dev_local_kczy' | awk {'print $9'})
#dockerimage_file=$(ls -l /home/ | grep 'dockerimages.tar.gz' | awk {'print $9'})
Edu_devops_file=$(ls /home/ | grep 'edu-coder-devops')
Data_file=$(ls /home/ | grep 'Data_edu_devops')
kczy_file=$(ls /home/ | grep 'kczy')
dockerimage_file=$(ls /home/ | grep 'dockerimages.tar.gz')
echo -e "\033[32m#################################################################\033[0m"
echo -e "\033[32m执行脚本文件$Edu_devops_file。\033[0m"
echo -e "\033[32m安装包文件$Data_file。\033[0m"
echo -e "\033[32m课程资源安装包文件$kczy_file。\033[0m"
echo -e "\033[32m课程镜像文件$dockerimage_file。\033[0m"
echo -e "\033[32m#################################################################\033[0m"
dtime 安装依赖包
[ -d $Home/Data_edu_devops ]
if [ $? -ne 0 ];then
echo "解压平台安装文件。"
cd $Home; tar -xzvf $Data_file
else
echo "平台安装文件已解压。"
fi
sleep 1
##安装依赖包
yum localinstall -y /home/Data_edu_devops/local-yumPackge/version7.6/all/*
#[ -d $Home/Data_edu_devops ]
#if [ $? -ne 0 ];then
# echo "解压依赖包文件:$Data_file"
# cd $Home; tar zxvf $Data_file
# echo "完成$Data_file解压。"
# echo "重命名脚本安装文件夹命名。"
# sleep 1
#else
# echo "依赖包文件解压。"
#fi
exist_command(){
for i in $@
do
command -v $i &>/dev/null
if [ $? -ne 0 ];then
echo $i 命令不存在,请安装$i
exit 1
else
echo $i 命令存在
fi
done
}
## 判断使用的命令是否存在
exist_command tar unzip rsync
dtime 解压脚本包文件
[ -d $Home/Edu_devops ]
if [ $? -ne 0 ];then
echo "解压安装脚本文件:$Edu_devops_file"
cd $Home; unzip $Edu_devops_file
echo "完成$Edu_devops_file解压。"
echo "重命名脚本安装文件夹命名。"
mv $(ls -l $Home | grep 'edu-coder-devops' | grep '^d' | awk {'print $9'}) $run_dir
else
echo "脚本文件已解压!"
fi
echo -e "\033[32m#################################################################\033[0m"
echo "开始部署…………"
sleep 1
##data_ready 函数
data_ready() {
## 解压localservce增量包
[ -d $Home/tar ]
if [ $? -ne 0 ];then
echo "解压课程资源包文件。"
cd $Home; unzip $kczy_file
else
echo "课程资源包已解压。"
fi
## 执行拷贝替换
cd $Home; rsync -av Data_edu_devops/LocalService/ Edu_devops/LocalService/
cd $Home; rsync -av Data_edu_devops/local-yumPackge/ Edu_devops/local-yumPackge/
cd $Home; rsync -av Data_edu_devops/pkg/ Edu_devops/pkg/
cd $Home; rsync -av tar/LocalService/ Edu_devops/LocalService/
}
##初始化安装ansibale函数
init_ansible() {
/usr/bin/yum -y localinstall $Home/Data_edu_devops/local-yumPackge/version7.6/all/*
sleep 1
/usr/bin/yum -y localinstall $Home/Data_edu_devops/local-yumPackge/version7.6/ansible/*
##配置ansible 不需要认证
sed -i 's/.*host_key_checking.*/host_key_checking = False/g' /etc/ansible/ansible.cfg
sed -i 's/.*StrictHostKeyChecking.*/StrictHostKeyChecking no/g' /etc/ssh/ssh_config
systemctl restart sshd
#拷贝配置文件
/usr/bin/cp $run_dir/template/ansible-hosts /etc/ansible/hosts
#备份
/usr/bin/mv /etc/hosts /etc/hostsold
/usr/bin/cp $run_dir/template/etc-hosts /etc/hosts
}
dtime 执行data_ready
echo "开始执行data_ready…………"
##运行data_ready函数 script
data_ready
#bash $run_dir/data_ready.sh
echo "执行完成"
echo -e "\033[32m######编辑hosts文件###########################################################\033[0m"
sleep 1
##自动修改配置文件网卡名
nic_name=$(ip add | grep '^2'|awk -F': ' '{print $2}')
if [[ $nic_name != "eth0" ]]; then
sed -i s/"wang_ka_Name=.*$"/"wang_ka_Name=$nic_name"/g $run_dir/template/ansible-hosts
fi
##编辑hosts文件脚本
bash $Home/edit_hosts.sh
echo -e "\033[32m######测试服务器ip地址是否可访问###########################################################\033[0m"
##测试服务器ip地址是否可访问
e_server_ip=$(cat $run_dir/template/etc-hosts | grep '^[0-9]' | awk {'print $1'})
for es_ip in $e_server_ip
do
ping -c 1 $es_ip &>/dev/null
#
if [ $? -ne 0 ];then
echo 服务器ip$es_ip 无法访问,请检查服务器网络。
sleep 3
exit 1
else
echo 服务器ip$es_ip 可正常访问!
fi
done
dtime 执行init_ansible
echo "开始安装并初始化ansible。"
init_ansible
#bash $run_dir/init_ansible.s
echo "ansible安装完成"
sleep 1
echo -e "\033[32m######再次测试服务器ip地址是否可访问###########################################################\033[0m"
##再次测试服务器ip地址是否可访问
a_server_ip=$(cat /etc/ansible/hosts | grep '^[0-9]' | awk {'print $1'})
for as_ip in $a_server_ip
do
ping -c 1 $as_ip &>/dev/null
#
if [ $? -ne 0 ];then
echo 服务器ip$as_ip 无法访问,请检查服务器网络。
sleep 3
exit 1
else
echo 服务器ip$as_ip 可正常访问!
fi
done
dtime 开始检查系统时间
pm_sys_time() {
##查看系统时间是否一直
ansible -f 10 count -m shell -a "date"
## 修改时间
while true
echo -n "所有输出日期是否准确yes/no"
read pt
do
case $pt in
no|NO|N|No|n)
echo -n "输入要当前的日期和时间时间格式2020/08/11 16:18:30"
read systime
ansible -f 10 count -m shell -a "date -s '$systime' "
;;
yes|Yes|y|Y|YES)
break
;;
*)
;;
esac
done
## 同步硬件时间
ansible -f 15 count -m shell -a "hwclock -w "
## 开启启动date时间为硬件时间
ansible -f 15 count -m shell -a "sed -i '11a/hwclock -s' /etc/rc.d/rc.local "
}
pm_sys_time
mk_dir(){
echo -e "\033[32m 创建/data/webguazai目录。\033[0m"
sleep 1
ansible -f 5 count -m shell -a "mkdir -p /data/webguazai"
echo -e "\033[32m 创建slave /data/workspace目录。\033[0m"
sleep 1
ansible -f 10 k8s-slave -m shell -a "mkdir -p /data/workspace"
}
mk_dir
all_copy() {
echo -e "\033[32m执行全拷贝。\033[0m"
sleep 1
[ ! -f $run_dir/copy.sh.bak ] && cp $run_dir/copy.sh $run_dir/copy.sh.bak
cat $run_dir/copy.sh | grep '^#read'
if [ $? -ne 0 ];then
sed -i "3a\passwd=$(cat /etc/ansible/hosts |grep "^ansible_ssh_pass" | awk -F '=' '{print $2}')" $run_dir/copy.sh
sed -i s/"^read"/"#read"/g $run_dir/copy.sh
fi
cd $run_dir; bash copy.sh
echo -e "\033[32m拷贝本地版yum包到所有的节点。\033[0m"
cd $run_dir; ansible -f 3 count -m copy -a "src=local-yumPackge/version7.6/ dest=/opt/local-install/"
}
dtime 执行全拷贝
all_copy
##判断是否是高可用
New_offline() {
cat /home/Edu_devops/New-offline-Single-main.yml |grep "等待………………" &>/dev/null
if [ $? -ne 0 ];then
sline_num=$(cat -n /home/Edu_devops/New-offline-Single-main.yml | grep "重新导入新bridge 数据库" |awk {'print $1'})
sed -i "$sline_num i\ - name: 等待………………" /home/Edu_devops/New-offline-Single-main.yml
sed -i "$sline_num a\ shell: sleep 30" /home/Edu_devops/New-offline-Single-main.yml
fi
cat /home/Edu_devops/New-offline-Mutil-main.yml |grep "等待………………" &> /dev/unll
if [ $? -ne 0 ];then
mline_num=$(cat -n /home/Edu_devops/New-offline-Mutil-main.yml | grep "重新导入新bridge 数据库" |awk {'print $1'})
sed -i "$mline_num i\ - name: 等待………………" /home/Edu_devops/New-offline-Mutil-main.yml
sed -i "$mline_num a\ shell: sleep 30" /home/Edu_devops/New-offline-Mutil-main.yml
fi
cat /etc/hosts | grep '^[0-9]' | grep 'haproxy' &>/dev/null
if [ $? -ne 0 ];then
dtime 启动Single模式部署
echo "Single模式部署"
cd $run_dir; ansible-playbook -e "webnum=1 mysqluser=root mysqlpass=pre123123" New-offline-Single-main.yml
# cat $Home/Single_install.log | grep '^fatal' | grep '正克隆到'
# if [ $? -ne 0 ];then
# echo "完成single部署"
# else
# sleep 30
# cd $run_dir; ansible-playbook -e "webnum=1 mysqluser=root mysqlpass=pre123123" New-offline-Single-main.yml --start-at="重新导入新bridge 数据库"
# fi
else
dtime 启动Mutil模式部署
echo "Mutil模式部署"
cd $run_dir; ansible-playbook -e "webnum=1 mysqluser=root mysqlpass=pre123123" New-offline-Mutil-main.yml
fi
}
New_offline
dtime 开始部署监控和定时任务
inst_timing() {
mysqlip=$(cat /etc/hosts | grep mysql | grep '^[0-9]'| awk '{print $1}')
##部署监控和定时任务
cd $run_dir; ansible-playbook after_dev/after_dev.yml --extra-vars "{'db':'localweb','mysqlip':'$mysqlip'}"
}
inst_timing
##导入镜像
load_images() {
[ -f /data/workspace/$dockerimage_file ]
if [ $? -ne 0 ];then
echo "将镜像文件移动到/data/workspace/目录。"
cd $Home; mv ./$dockerimage_file /data/workspace/
else
echo "镜像文件已经移动到/data/workspace/目录。"
fi
#ansible -f 3 k8s-slave -m shell -a "ls /data/workspace | grep """
sleep 1
##在master上执行命令在所有slave服务器上导入镜像
ansible -f 3 k8s-slave -m shell -a "docker load -i /data/workspace/$dockerimage_file"
}
dtime 开始导入slave服务器docker镜像
load_images
sleep 3
echo "部署成功!"
Loading…
Cancel
Save