1. 程式人生 > >自動化運維系列之SaltStack批量部署Apache服務

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

col .com 函數 base cat 通過 color 生效 thead

自動化運維系列之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
minion 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文件根目錄、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的端口是否開啟

技術分享圖片

  • 被管理端配置

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  (動態數據)

技術分享圖片

技術分享圖片

技術分享圖片

配置管理安裝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服務是否安裝啟動

技術分享圖片

技術分享圖片

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