Saltstack 自動化運維工具-初探環境部署篇

                                                                           Saltstack 自動化運維工具-初探環境部署篇python


文檔參考:mysql

      1.1 githup 地址;git

          https://github.com/ansible/ansiblegithub

          https://github.com/saltstack/salt sql

     1.2.執行記錄到mysql;docker

       https://docs.saltstack.com/en/latest/ref/returners/all/ shell

    

一.自動化運維工具Saltstack和Ansible 對比;數據庫


   1.ansible 介紹安全


     1.1  無Agent去中心化,採用原生SSH協議進行管理(須要提早打通SSH免密鑰登錄)bash

     1.2 其實ansible也支持agent的方式,即所謂的「pull」的模式,就是經過一個客戶端去拉取要執行的任務。

     1.3 開源社區活躍度Github上,ansbile有 42.2k 統計來源地址:https://github.com/ansible/ansible  

     1.4 主要功能

            1.4.1  Ansible徹底基於Python開發,方便Ansible二次開發;

            1.4.2   豐富的內置模塊,學習門檻較低;

            1.4.3   Playbook 劇本讓環境部署簡單化。


     1.5  Ansible只是提供一種框架。

      主要包括: 

        1.5.1 鏈接插件connection plugins:負責和被監控端實現通訊;

        1.5.2  host inventory:指定操做的主機,是一個配置文件裏面定義監控的主機;

        1.5.3  各類模塊核心模塊、command模塊、自定義模塊;

        1.5.4  藉助於插件完成記錄日誌郵件等功能;

        1.5.5  playbook:劇本執行多個任務時,讓節點一次性運行多個任務。

        image.png

      

        1.6 執行原理過程;

              6BEB7CFE-D71B-4309-B23A-4ED93E135C89.png        

   


  2. Saltstack 介紹;

     2.1  Agent 化連被控機器須要安裝Agent端須要配置master地址,創建信任關係 開放通訊端口默認:4506/4505   

     2.2 大規模併發的能力:實現機制的差別,也致使saltstack在這方面是佔優的.一次操做的機器過千臺,仍是用saltstack效率更高一些。

     2.3  開源社區活躍度Github上 Saltstack 10.7k 統計來源地址: https://github.com/saltstack/salt

     2.4  主要功能: 

           2.4.1  主從集中化管理;

           2.4.2  配置簡單、功能強大、擴展性強;

           2.4.3  主控端(master)和被控端(minion)基於證書認證,安全可靠;

           2.4.4  支持API及自定義模塊,可經過Python輕鬆擴展;


     2.5  saltstack 內部工做原理圖

           slat.png

   

            2.4.1 Minion 是 SaltStack 須要管理的客戶端安裝組件,會主動去鏈接 Master 端,並從 Master 端獲得資源狀態信息,同步資源管理信息

           2.4.2 Master 做爲控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。

           2.4.3 ZeroMQ 是一款開源的消息隊列軟件,用於在 Minion 端與 Master 端創建系統通訊橋樑。

           2.4.4 Daemon 是運行於每個成員內的守護進程,承擔着發佈消息及通訊端口監聽的功能。


      2.6 執行過程;

            image.png



 



  二.Satstack 部署實戰; 


1.系統環境列表;


系統版本 內核版本    系統python版本 saltstack-master 版本 saltstack-minion版本
CentOS  7.2.1511 3.10.0-862.6.3.el7.x86_64     Python 2.7.5 salt 2015.5.10  salt-minion 2015.5.10






2.部署規劃;

部署建議: 

   1.在生產環境操做業務量較大且資源容許的狀況下采用集羣部署.杜絕單點故障

   

image.png


3.簡單化部署;


3.1 本文環境部署描述:  
     mysql 一臺  saltstack-matser 端一臺 saltstack-monion 端5臺;
     
3.2 獲取軟件包;
      root@salt-master ~]# yum -y install epel-release && yum -y install salt-maste  
      
3.3 配置salt-master配置文件;
root@salt-master ~]# grep -v "^#" /etc/salt/master  |grep -v "^$"
interface: 192.168.54.12  #執行管理端的ip地址
publish_port: 4505          ##執行管理端服務監聽端口
user: ops                   ##執行管理端用戶地址
max_open_files: 100000      ###最大文件打開數 
worker_threads: 16          ##moinon端工做線程數 建議不要大於系統cpu核數
ret_port: 4506              #數據採集上報端口 
pidfile: /var/run/salt-master.pid    ##容許pid
timeout: 5                  ##數據採集超時時間
base:
    - /etc/salt         #saltstack 配置文件編寫yaml 存放的根目錄
pillar_roots:                #pillar 執行的目錄
  base:                 
    - /etc/pillar
syndic_master_port: 4506    ###同步信息端口 
log_file: /var/log/salt/chj-salt-master      ##日誌文件路徑
log_level: warning 
log_level_logfile: warning  #日誌級別
client_acl:
  ops:                      ##受權可執行salt命令用戶
    - '*'
    
return: mysql               #執行命令返回結果統計 用於安全審覈和命令審覈.
master_job_cache: mysql     #數據庫受權信息;
mysql.host: '192.168.54.23' #鏈接地址  支持其餘數據庫類型見:https://docs.saltstack.com/en/latest/ref/returners/all/
mysql.user: 'salt'        #鏈接用戶
mysql.pass: 'saltstack'   #鏈接密碼
mysql.db: 'salt'          #鏈接數據庫
mysql.port: 3306          #數據庫端口


3.4 安裝salt-minion 端;

    3.4.1 爲了節約安裝時間採用ansible 進行批量


image.png


 3.5 安裝salt-monion 客戶端;

1.執行遠程安裝salt-minion 端
[ops@devops-manager-dev tools]$ ansible -i ip.txt all -m shell -a "yum -y install epel-release && yum -y install salt-minion" -b -f 3 

2.分發修改配置文件腳本;
2.1.腳本內容:
#/bin/bash
minid=$(echo $RANDOM |md5sum|cut -c 1-6)
sed -i '1imaster: 192.168.54.12' /etc/salt/minion 
sed -i '2ilog_file: /var/log/salt/chj-minion.log' /etc/salt/minion
sed -i '3iuser: root' /etc/salt/minion         
sed -i "4iid: chj_salt_$minid" /etc/salt/minion
mkdir /var/log/salt/
touch /var/log/salt/chj-minion.log
chown ops:ops /var/log/salt -R

3 開始分發;
ansible -i ip.txt all -m copy -a "src=./salt_minon.sh dest=/tmp/salt_minon.sh" -b -f 3

4.執行修改文件腳本

ansible -i ip.txt all -m shell -a "/bin/bash /tmp/salt_minon.sh" -b -f 3

5.啓動salt-minion服務

[ops@salt-master devops]$ ansible -i ip.txt all -m shell -a "systemctl start salt-minion " -b -f 3
Thursday 12 March 2020  21:33:02 +0800 (0:00:00.090)       0:00:00.090 ******** 
192.168.46.21 | CHANGED | rc=0 >>
192.168.46.18 | CHANGED | rc=0 >>
192.168.46.20 | CHANGED | rc=0 >>
192.168.46.224 | CHANGED | rc=0 >>
192.168.46.158 | CHANGED | rc=0 >>

 3.6.salt test.ping 測試;

image.png


 3.7.ansible 和saltstack 執行耗時對比;


image.png


image.png


3.8 驗證執行結果返回mysql數據庫;

image.png

 

查看mysql 表中有沒有數據返回 (時間戳問題由於測試環境mysql 使用docker 沒有修改時區差距8小時)


image.png

相關文章
相關標籤/搜索