CentOS6.5 SaltStackの導入


ディレクトリsaltstackとは?Saltstackはサーバインフラストラクチャの集中化管理プラットフォームであり、構成管理、リモート実行、モニタリングなどの機能を備えており、一般的に簡略化版のpuppetと強化版に基づくfuncと理解できる.SaltStackはPython言語に基づいて実現され、軽量レベルのメッセージキュー(ZeroMQ)とPythonサードパーティモジュール(Pyzmq、PyCrypto、pyjinja 2、python-msgpack、PyYAMLなど)を組み合わせて構築される.Saltstackには次のような特徴があります.
  • 導入が簡単で便利な
  • はUNIX/LinuxおよびWindows環境の大部分をサポートする
  • 主従集中化管理
  • 配置が簡単で、機能が強く、拡張性が強い
  • マスタ端子(Master)と被制御端子(minion)は、証明書認証に基づいて安全で信頼性の高い
  • である.
  • はAPIとカスタムモジュールをサポートし、Pythonで
  • を簡単に拡張できる.
    参照ドキュメント:プロジェクトアドレス:https://github.com/saltstack/salt公式サイトのアドレス:http://www.saltstack.com公式ドキュメント:http://docs.saltstack.com OR http://docs.saltstack.cn開発言語:Python運転モード:C/S一、環境紹介
    HostName
    IP
    Service
    Master
    192.168.179.100
    salt-master
    Minion
    192.168.179.101
    salt-minion
    基本用語
    説明
    maste
    コントロールセンター、saltコマンド実行とリソースステータス管理端
    minion
    管理が必要なクライアントマシンは、master側にアクティブに接続し、master側からリソース状態情報を取得し、リソース管理情報を同期します.
    states
    管理命令セットの構成
    grains
    minion端の静的変数
    pillar
    minion端の動的変数
    highstate
    minionにステータスを永続的に追加し、slsプロファイルから読み込む
    salt schedule
    クライアント構成の自動保持
    二、設置前の準備(全ての機器で行う必要がある)2.1 Hostの追加
            # echo -e "192.168.179.100 master
    192.168.179.101 minion-1" >> /etc/hosts

    2.2ファイアウォールを閉じる
             # service iptables stop
             # chkconfig iptables off

    2.3 Selinuxを閉じる
            #  sed -i 's/SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
            #  setenforce 0

    2.4 SaltStackをインストールするyumソース
             #  yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el6.noarch.rpm
             #  yum clean expire-cache

    三、SaltStackMasterインストール3.1 hostnameの設定
            #  sed -i 's/HOSTNAME=.*$/HOSTNAME=master/g' /etc/sysconfig/network

    3.2 Salt-masterのインストール
            # yum -y install salt-master

    3.3 salt-masterの構成
             # cp /etc/salt/master /etc/salt/master-example
             # sed -i 's/#interface/interface/g' /etc/salt/master
             # egrep -v "^#|^$" /etc/salt/master

    3.4セキュリティ認証の構成
    現在の表示
            #  salt-key -L
            Accepted Keys:
            Denied Keys:
            Unaccepted Keys:
            Rejected Keys:

    すべてのkeyを受信
            #  salt-key -A

    3.5 salt-masterの起動
             #  service salt-master start
             # chkconfig salt-master on

    正常に起動したかどうかを確認
             # cat /var/run/salt-master.pid

    Minionインストール
    3.6 hostnameの設定
            # sed -i 's/HOSTNAME=.*$/HOSTNAME=minion-1/g' /etc/sysconfig/network

    3.7 Salt-minionのインストール
            # yum -y install salt-minion

    3.8 Salt-minionの構成
             # cp /etc/salt/minion /etc/salt/minion-example
             # sed -i 's/#master: salt/master: master/g' /etc/salt/minion

    3.9 Salt-minionの起動
             # service salt-minion start
             # chkconfig salt-minion on

    四、テストはmaster機械でテストpingを実行する
        # salt '*' test.ping
        minion-1:
        True

    テスト実行df-h
        #  salt '*' cmd.run 'df -h'
        minion-1:
        Filesystem            Size  Used Avail Use% Mounted on
        /dev/mapper/vg_centos6-lv_root
                               18G  1.7G   15G  11% /
        tmpfs                 490M   12K  490M   1% /dev/shm
        /dev/sda1             477M   63M  389M  14% /boot

    五、自動スクリプト、以下を参照してください.
        # cat /export/zlyang/autoSaltStackInstall.sh
    
        #!/bin/bash
    ################################################
    #                                              #
    #        author: Zlyang by 2019-08-28          #
    #   description: Auto Install SaltStack        #
    #                                              #
    ################################################
    INSTALL_TIME=`date +%F\ %T`
    CURRENTDIR=`pwd`;
    LOGFILE="${CURRENTDIR}/salt_install.log";
    ISCLOSEFIREWALLFIREWALL="yes";
    ISCLOSESELINUX="yes";
    ready(){
        printf "" > ${LOGFILE}
        printf "    :${INSTALL_TIME}
    " >> ${LOGFILE} printf "
    " printf "\033[31m Host , IP , :\033[0m
    " printf "\033[31m %-12s %-10s \033[0m
    " 192.168.1.1 master printf "\033[31m *
    *
    \033[0m" printf "
    " printf " :
    " |tee -a ${LOGFILE} stop_iptables; close_selinux; printf "
    SaltStack Repo :
    " |tee -a ${LOGFILE} install_salt_repo; printf "
    SaltStack:
    "|tee -a ${LOGFILE} install_salt; } stop_iptables(){ printf "\033[31m
    ( , ! \033[31m 4505 \033[0m \033[31m 4506 \033[0m )
    \033[0m" printf " :
    " read -p "[yes/no] :" ISCLOSEFIREWALL case "${ISCLOSEFIREWALL}" in Y|y|yes|YES) /etc/init.d/iptables stop 2>&1 >>/dev/null if [[ $? == 0 ]];then printf "\t ......[\033[32m \033[0m ]
    "|tee -a ${LOGFILE} fi ;; n|N|no|NO) printf "\033[31m \t , 4505 4506 \033[0m
    "|tee -a ${LOGFILE} exit 1 ;; *) printf "\033[31m \t , 4505 4506 \033[0m
    "|tee -a ${LOGFILE} exit 1 ;; esac } close_selinux(){ printf "\033[31m
    ( SELinux, SaltStack )
    \033[0m" printf " SELinux:
    " read -p "[yes/no] :" ISCLOSESELINUX case "${ISCLOSESELINUX}" in Y|y|yes|YES) sed -i 's/SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config ISDISABLED=`getenforce`; case "${ISDISABLED}" in Disabled) printf "\tSELinux
    "|tee -a ${LOGFILE} ;; Enforcing) setenforce 0 if [[ $? == 0 ]];then printf "\tSELinux ......[\033[32m \033[0m ]
    "|tee -a ${LOGFILE} fi ;; *) printf "\t\033[31m SELinux, :\"setenforce 0 && reboot \"
    "|tee -a ${LOGFILE} printf "\t\033[31m
    "|tee -a ${LOGFILE} printf "\033[31m \t SELinux, SaltStack !\033[0m
    "|tee -a ${LOGFILE} ;; esac ;; n|N|no|NO) printf "\t\033[31m SELinux, :\"setenforce 0 && reboot \"
    "|tee -a ${LOGFILE} printf "\t\033[31m
    "|tee -a ${LOGFILE} printf "\033[31m \t SELinux, SaltStack !\033[0m
    "|tee -a ${LOGFILE} ;; *) printf "\t\033[31m SELinux, :\"setenforce 0 && reboot \"
    "|tee -a ${LOGFILE} printf "\t\033[31m
    "|tee -a ${LOGFILE} printf "\033[31m \t SELinux, SaltStack !\033[0m
    "|tee -a ${LOGFILE} ;; esac } install_salt_repo(){ ISINSTALL=`rpm -qa|grep salt-repo-latest-2.el6.noarch`; if [[ -z ${ISINSTALL} ]];then yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el6.noarch.rpm 2>&1 >> ${LOGFILE} if [[ $? == 0 ]];then printf "\tsalt-repo ......[\033[32m \033[0m ]
    "|tee -a ${LOGFILE} else printf "\tsalt-repo ......[\033[31m \033[0m ]
    "|tee -a ${LOGFILE} exit 1 fi else printf "\t salt-repo, !
    "|tee -a ${LOGFILE} fi } install_salt(){ printf "

    \t1:Salt-Master(Server )
    \t2:Salt-Minion(Client )

    \tq:
    :" read CHOICE_SYSTEM case ${CHOICE_SYSTEM} in 1) printf "\t Salt-Master:
    " |tee -a ${LOGFILE} yum -y install salt-master |tee -a ${LOGFILE} if [ $? == "0" ]; then LOCAL_IP=`ifconfig|grep broadcast|awk '{print $2}'`; CONFIG_FILE="/etc/salt/master"; if [ -f ${CONFIG_FILE} ]; then printf "\t :Salt-Master ......[\033[32m \-33[0m ]
    " |tee -a ${LOGFILE} printf "\t

    " |tee -a ${LOGFILE} cp /etc/salt/master /etc/salt/master-example sed -i 's/#interface/interface/g' ${CONFIG_FILE} printf "#################################
    " |tee -a ${LOGFILE} egrep -v "^#|^$" /etc/salt/master |tee -a ${LOGFILE} printf "#################################
    " |tee -a ${LOGFILE} printf "

    " |tee -a ${LOGFILE} printf "
    \033[31m ( Pending ;)\033[0m
    " |tee -a ${LOGFILE} salt-key -A && salt-key -L printf "
    .......[ \033[32m \033[0m ]
    " |tee -a ${LOGFILE} printf "
    Salt-Master
    " |tee -a ${LOGFILE} service salt-master start PID=`cat /var/run/salt-master.pid` if [ ! -z ${PID} ]; then printf "
    \t Salt-Master .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} printf "\t :
    " printf "\t( :Yes)
    " read -t 5 -p "[yes/no]:" DEFAULT_START case "${DEFAULT_START}" in y|Y|YES|yes) chkconfig salt-master on printf "
    \t Salt-Master .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} ;; n|N|no|NO) printf "\t , :\"chkconfig salt-master on\"
    " ;; *) chkconfig salt-master on printf "
    \t Salt-Master .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} ;; esac for((i=0;i<6;i++)); do printf "*
    " sleep 0.8 done printf "
    \033[32m !SaltStack !\033[0m
    " exit 0 else printf "
    \t Salt-Master .......[\033[31m \033[0m ]
    " |tee -a ${LOGFILE} fi else printf "\t \033[31m , !\033[0m
    " exit 1 fi else printf "\t :salt-master ......[\033[31m \-33[0m ]
    " |tee -a ${LOGFILE} exit 1 fi ;; 2) printf "\t Salt-Minion:
    " |tee -a ${LOGFILE} yum -y install salt-minion if [ $? == "0" ]; then CONFIG_FILE="/etc/salt/minion"; if [ -f ${CONFIG_FILE} ]; then printf "\t :Salt-Minion ......[\033[32m \-33[0m ]
    " |tee -a ${LOGFILE} printf "\t

    " |tee -a ${LOGFILE} cp /etc/salt/minion /etc/salt/minion-example read -p " Salt-Master IP :" SERVER_IP sed -i "s/#master: salt/master: ${SERVER_IP}/g" ${CONFIG_FILE} printf "#################################
    " |tee -a ${LOGFILE} egrep -v "^#|^$" /etc/salt/minion |tee -a ${LOGFILE} printf "#################################
    " |tee -a ${LOGFILE} service salt-minion start PID=`cat /var/run/salt-minion.pid` if [ ! -z ${PID} ]; then printf "
    \t Salt-Minion .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} printf "\t :
    " printf "\t( :Yes)
    " read -t 5 -p "[yes/no]:" DEFAULT_START case "${DEFAULT_START}" in y|Y|YES|yes) chkconfig salt-minion on printf "
    \t Salt-Minion .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} ;; n|N|no|NO) printf "\t , :\"chkconfig salt-minion on\"
    " ;; *) chkconfig salt-minion on printf "
    \t Salt-Minion .......[\033[32m \033[0m ]
    " |tee -a ${LOGFILE} ;; esac for((i=0;i<6;i++)); do printf "*
    " sleep 0.8 done printf "
    \033[32m !SaltStack !\033[0m
    " exit 0 else printf "
    \t Salt-Minion .......[\033[31m \033[0m ]
    " |tee -a ${LOGFILE} exit 1 fi else printf "\t :Salt-Minion ......[\033[31m \033[0m ]
    " |tee -a ${LOGFILE} exit 1 fi else printf "\t :Salt-Minion ......[\033[31m \033[0m ]
    " |tee -a ${LOGFILE} exit 1 fi ;; q|Q|quit|exit) exit 0 ;; *) install_salt; ;; esac } ready;

    注意:このすべての導入は完了しました.この構築中に問題が発生した場合は、dba_にメールを送信できます[email protected]