saltstack一鍵安裝

#!/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

相關文章
相關標籤/搜索