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

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

saltstack原理

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

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

當客戶端啓動後,會主動鏈接Master端註冊,而後一直保持該TCP鏈接,而Master經過這條TCP鏈接對客戶端進行控制。apache

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/hostnamevim

三臺主機分別爲:
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文件根目錄、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服務

  • 被管理端配置

vim /etc/salt/minionide

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服務

配置管理安裝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

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

  • 被控端檢查驗證acaphe服務是否安裝啓動

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

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

相關文章
相關標籤/搜索