天天看點

自動化運維系列之SaltStack批量部署Apache服務

saltstack原理

SalStack由master和minion構成,master是服務端,表示一台伺服器;minion是用戶端,表示多台伺服器。在Master上發送指令給符合條件的minion,Minion就會執行相應的指令。Master和Minion之間是通過ZeroMQ(消息隊列)進行通信的。

SaltStack的Master端的監聽端口是4505和4506,4505端口是Master和Minion認證通信端口;4506端口是Master用來發送指令或者接收Minion的指令執行傳回資訊。

當用戶端啟動後,會主動連接配接Master端注冊,然後一直保持該TCP連接配接,而Master通過這條TCP連接配接對用戶端進行控制。

saltstack常用子產品

(1)、pkg子產品

pkg子產品的作用是包管理,包括增删更新。

(2)、file子產品

file子產品的作用的管理檔案操作,包括同步檔案、設定檔案權限和所屬使用者組、删除檔案等操作。

(3)、cmd子產品

cmd子產品的作用是在Minion上執行指令或者腳本。

(4)、user子產品

user子產品的作用是管理系統賬戶操作。

(5)、service子產品

service子產品的作用是管理系統服務操作。

(6)、cron子產品

cron子產品的作用是管理cron服務操作。
           

SaltStack部署安裝

  • 部署環境
角色 主機名 IP位址
master master.saltstack.com 172.16.10.138
minion web01.saltstack.com 172.16.10.147
web02.saltstack.com 172.16.10.146

安裝部署的操作步驟

  • 修改三台伺服器的主機名
vim /etc/hostname
三台主機分别為:
master.saltstack.com    //(管理)
web01.saltstack.com     //(被管理)
web02.saltstack.com     //(被管理)
           
  • 修改主機解析檔案
vim /etc/hosts
172.16.10.138 master.saltstack.com
172.16.10.147 web01.saltstack.com
172.16.10.146 web02.saltstack.com

//修改完成後,init 6 重新開機伺服器使配置生效
           
  • 重新開機完成後,首先關閉防火牆
systemctl stop firewalld.service   //關閉防火牆
setenforce 0     //關閉增強性安全功能
           
  • 安裝服務
yum install -y epel-release      //配置安裝軟體源
yum install -y salt-master      //管理端安裝
yum install -y epel-release     //配置安裝軟體源
yum install -y salt-minion      //被管理端安裝
           
  • 管理端配置(修改管理端的配置檔案)
vim /etc/salt/master
修改如下:
15行 interface: 172.16.10.138   //監聽位址(本地位址)
215行 auto_accept: True        //避免要運作salt-key來确認證書認證
416行 file_roots:
          base:
          - /srv/salt           //saltstack檔案根目錄位置,目錄需要建立
710行組分類:
nodegroups:
  group1: 'web01.saltstack.com'
  group2: 'web02.saltstack.com'

552行 pillar_opts: True        //開啟pillar功能,同步檔案功能
529行 
pillar_roots:
          base:
          - /srv/pillar         //pillar的主目錄,需要建立
           
  • 檢視對主配置檔案做的更改
cat /etc/salt/master | grep -v ^$ | grep -v ^#
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
  • 建立saltstack檔案根目錄、pillar的主目錄
mkdir /srv/salt          //建立saltstack檔案根目錄
mkdir /srv/pillar        //建立pillar的主目錄
           
  • 啟動master伺服器(管理端)
systemctl start salt-master.service      //開啟salt-master服務
systemctl enable salt-master.service    //設定開機自啟動
netstat -anpt | egrep '4505|4506'       //檢查master的端口是否開啟
           
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
  • 被管理端配置
vim /etc/salt/minion
16行 master: 172.16.10.138      //指定主要端IP
78行 id: web01.saltstack.com     //指定被控端主機名
     id: web02.saltstack.com     //第二台被控端主機名
           
  • 開啟被控端的服務
systemctl start salt-minion.service
           
  • 主要端測試與被控端的通信狀态
salt '*' test.ping     //*表示所有主機
salt '*' cmd.run 'df -h'   //遠端執行指令
salt-key   //檢視在 master 上已經被接受過的用戶端
salt 'web01.saltstack.com' grains.items (靜态資料)
salt 'web01.saltstack.com' pillar.items  (動态資料)
           
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務
自動化運維系列之SaltStack批量部署Apache服務

配置管理安裝Apache

  • 在主要端建立入口檔案
vim /srv/salt/top.sls
base:
  '*':
    - apache
注意:'*',則表示在所有的用戶端執行 apache 子產品。
           
  • 建立apache.sls檔案并寫入以下内容
vim /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 表示開機啟動。
           
  • 重新開機控制端服務
systemctl restart salt-master.service
           
  • 重新整理state配置指令,使兩台被控端安裝apache并配置啟動服務
salt '*' state.highstate 
           
  • 被控端檢查驗證acaphe服務是否安裝啟動