#!/usr/bin/bashbootstrap
#define:saltstack 自動化安裝centos
#curr_dir="/data/scripts/saltstac_install"
curr_dir=`pwd`bash
packge_dir="/data/tools"url
yum_Warehouse="/etc/yum.repos.d"centos7
logdir=$curr_dir #日誌路徑
log=$logdir/log.log #日誌文件
is_font=1 #終端是否打印日誌: 1打印 0不打印
is_log=1 #是否記錄日誌: 1記錄 0不記錄spa
#version_num=`cat /etc/redhat-release |awk '{print $3}'|cut -d'.' -f1`
version_num=`cat /etc/redhat-release| awk -F"release" '{print $2}'|awk '{print $1}'|cut -d'.' -f1`
datef(){
date "+%Y-%m-%d %H:%M:%S"
}日誌
print_log(){
if [[ $is_log -eq 1 ]];then
[[ -d $logdir ]] || mkdir -p $logdir
echo -e "[ $(datef) ] $1" >> $log
fi
if [[ $is_font -eq 1 ]];then
echo -e "[ $(datef) ] $1"
fi
}ip
#####判斷次命令是否存在,後面建立各系統環境的時候須要用到
wget_judge() {
which wget
if [[ $? -eq 0 ]];then
print_log "wget 命令存在"
else
print_log "wget 命令不存在"
yum -y install wget
fi
[[ -d $packge_dir ]]||mkdir -p $packge_dirget
}it
####yum源更新
yum_update() {
which expect
if [[ $? -eq 0 ]];then
print_log "expect存在,能夠開始後面的"
else
yum -y install expect
fi
expect -c "
set timeout 1200;
spawn /usr/bin/yum update yum
expect {
"*y/N*" {send "y"\r;exp_continue}
}
expect eof;"
expect -c "
set timeout 1200;
spawn /usr/bin/yum update
expect {
"*y/N*" {send "y"\r;exp_continue}
}
expect eof;"
}
#####saltstack master or minion安裝
saltstack_install() {
if [[ $1 == master ]];then
print_log "salt-master 開始安裝"
yum -y install salt-master
#result=`yum -y install salt-master|grep 'No package'|wc -l`
if [[ $? -eq 0 ]];then
print "salt-master 安裝成功"
else
yum_update
yum -y install salt-master
fi
elif [[ $1 == minion ]];then
print_log "salt-minion 開始安裝"
yum -y install salt-minion
if [[ $? -eq 0 ]];then
print_log "salt-minin 安裝成功"
else
yum_update
yum -y install salt-minion
fi
else
echo "Usage:master|minion"
fi
}
######centos5環境準備
five_env() {
cd $yum_Warehouse
[[ -f CentOS-Base.repo ]]&&mv CentOS-Base.repo CentOS-Base.repo.back
wget http://mirrors.aliyun.com/repo/Centos-5.repo
wget --no-check-certificate -O - http://bootstrap.saltstack.org | sh
if [[ $? -ne 0 ]];then
yum_update
wget --no-check-certificate -O - http://bootstrap.saltstack.org | sh
fi
}
#####centos6環境準備
six_env() {
cd /usr/local/src/
wget -c http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/epel.repo
sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel.repo
}
####centos7環境準備
siven_env() {
cd $packge_dir
wget https://repo.saltstack.com/yum/rhel7/SALTSTACK-GPG-KEY.pub
rpm --import SALTSTACK-GPG-KEY.pub
rm -f SALTSTACK-GPG-KEY.pub
echo -e "####################\n# Enable SaltStack's package repository\n[saltstack-repo]\nname=SaltStack repo for RHEL/CentOS 7\nbaseurl=https://repo.saltstack.com/yum/rhel7\nenabled=1\ngpgcheck=1\ngpgkey=https://repo.saltstack.com/yum/rhel7/SALTSTACK-GPG-KEY.pub" > $yum_Warehouse/saltstack.repo
}
#####判斷saltstack是否已經安裝
Whether_installed() {
###判斷輸入的位移參數是否正確
if [[ $1 == master ]]|| [[ $1 == minion ]];then
print_log "參數正確"
else
echo "Usage:master|minion"
exit 1
fi
which salt-$1
if [[ $? -eq 0 ]];then
print_log "salt-"$1" 已經安裝,請確認!"
exit 1
else
print_log "salt-"$1" 未安裝,繼續下面的操做"
fi
}
Whether_installed "$1"
wget_judge
case $version_num in 5) five_env #saltstack_install "$1" ;; 6) six_env saltstack_install "$1" ;; 7) siven_env saltstack_install "$1" ;; *) echo "Usage:Operating system version 5|6|7,saltstack master|minion" ;; esac exit 1