自動化運維之SaltStack

SaltStack原理:

  • SaltStack由Master和Minion構成,master是服務端,表示一臺服務器;minion是客戶服務端,表示多臺服務器。在master上發送命令給minion,minion就會執行相應的命令。master與minion之間是通過ZeroMQ(消息隊列)進行通信的。
  • SaltStack的master端監聽4505與4506端口,4505爲master和minion認證通信端口,4506爲master用來發送命令或者接受minion的命令執行返回信息。
  • 當客戶端啓動後,會主動連接master端註冊,然後一直保持該TCP連接,而master通過這條TCP連接對客戶端進行控制,如果連接斷開,master對客戶端將不能進行控制,但是,當客戶端檢查到連接斷開後,會定期向master端請求註冊連接
    SaltStack常用模塊:
    SaltStack提供了非常多的功能模塊,以便於對操作系統的基礎功能和常用工具的操作。
    1.pkg模塊:pkg模塊的作用是包管理,包括增刪更新。
    2.file模塊:file模塊的作用是管理文件操作,包括同步文件,設置文件權限和所屬用戶組,刪除文件等操作。
    3.cmd模塊:cmd模塊的作用是在minion上執行命令或者腳本。
    4.user模塊:user模塊的作用是管理系統帳號操作。
    5.service模塊:service模塊的作用是管理系統服務操作。
    6.cron模塊:cron模塊的作用是管理cron服務操作。

    SaltStack安裝部署:

角色 操作系統 主機名 IP地址
master CentOS7 master.saltstack.com 192.168.72.128
minion CentOS7 web01.saltstack.com 192.168.72.159
minion CentOS7 web02.saltstack.com 192.168.72.161
1.修改三臺服務器主機名:  
*   hostnamectl set-hostname master.saltstack.com       
*   hostnamectl set-hostname web01.saltstack.com       
*   hostnamectl set-hostname web02.saltstack.com

自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack

2.修改三臺hosts文件(內容相同):
* vim /etc/hosts
192.168.72.128 master.saltstack.com
192.168.72.159 web01.saltstack.com
192.168.72.161web02.saltstack.com
* init 6      #分別重啓系統 讓各主機名生效

自動化運維之SaltStack

3.重啓之後將三臺服務器的防火牆關閉,selinux功能關閉;分別爲三臺機器添加epel源,本地有官方源.
* systemctl stop firewalld.service
* setenforce 0
* yum install epel-release -y     #安裝epel源

自動化運維之SaltStack

4.master上安裝saltsatck服務端:
* yum install salt-master -y      #安裝 master salt 服務

自動化運維之SaltStack

5.安裝完成之後修改配置文件:
* vim /etc/salt/master
 15行:interface: 192.168.72.128    # master 監控地址
 215行:auto_accept: True    #開啓  避免要運行salt-key來確認證書認證,自動授權同意
 416行:
 file_roots:                #開啓saltstack文件根目錄位置,存放文件
   base:
     - /srv/salt            #默認文件夾不存在,需要創建
710行: 
 nodegroups:
   group1: 'web01.saltstack.com'        #指定被控制服務器主機名
   group2: 'web02.saltstack.com'
552行:pillar_opts: True    #開啓pillar功能   
529行:
pillar_roots:        #pillar的主目錄,存放動態信息
  base:
       - /srv/pillar    #默認文件夾不存在,需要創建

自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack

6.根據剛纔修改的配置文件創建相應的目錄
* mkdir /srv/salt    
* mkdir /srv/pillar
* cat /etc/salt/master | grep -v ^$ | grep -v ^#   #查看配置文件修改內容
* systemctl start salt-master.service   #開啓服務
* netstat -antp | egrep '4505|4506'    #查看 4505 4506 端口是否打開

自動化運維之SaltStack
自動化運維之SaltStack

7.在兩臺minion上安裝saltstack客戶端:
* yum -y install salt-minion          #安裝 minion salt 服務

自動化運維之SaltStack

8.安裝好之後修改配置文件(兩臺minion都需要):
* vim /etc/salt/minion
16行:master: 192.168.72.128    #指向 master IP地址
78行:和master配置文件中節點服務器名稱統一 
     id:web01.saltstack.com     #節點一上修改 
     id:web02.saltstack.com       #節點二上修改

自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack

9.啓動被監控主機服務
* systemctl start salt-minion.service     
10.在監控端master查看管理的主機
* salt-key list   #查看被控主機
*.在主控端測試與被控端的通信狀態:
* salt '*' test.ping      測試與被管理端是否網絡連通
* salt '*' cmd.run 'df -h'   //遠程執行命令
* 查看被控主機上grains所有值:(每次minion在啓動是都會獲取客戶端信息)
* salt 'web01.saltstack.com' grains.items (靜態數據)
* salt 'web01.saltstack.com' pillar.items  (動態數據)

自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack
自動化運維之SaltStack

11.配置管理安裝Apache,下面進行的演示是遠程通過 yum 方式安裝 Apache。步驟如下:
* 修改配置文件
* vi /etc/salt/master     // 打開如下內容的註釋
  file_roots:
      base:
      - /srv/salt/
12.注意:環境: base、dev(開發環境)、test(測試環境)、prod(生產環境)
* vi /srv/salt/top.sls
base:
  '*':
    - apache
注意:'*',則表示在所有的客戶端執行 apache 模塊。

自動化運維之SaltStack

13.編寫安裝Apache劇本:
* vi /srv/salt/apache.sls
apache-service:
  pkg.installed:
    - names:                // 如果只有一個服務,那麼就可以寫成 –name: httpd 不用再換一行
      - httpd
      - httpd-devel
  service.running:
    - name: httpd
    - enable: True
注意:apache-service 是自定義的 id 名。pkg.installed 爲包安裝函數,下面是要安裝的包的名字。service.running 也是一個函數,來保證指定的服務啓動,enable 表示開機啓動。

自動化運維之SaltStack

14.重啓服務
* systemctl restart salt-master
執行命令
* salt '*' state.highstate 

自動化運維之SaltStack
15.查看apache服務是否安裝成功:
自動化運維之SaltStack

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章