自動化運維之SaltStack,批量安裝httpd實戰

SaltStack原理

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

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

當客戶端啓動後,會主動鏈接Master端註冊,而後一直保持該TCP鏈接,而Master經過這條TCP鏈接對客戶端進行控制。若是鏈接斷開,Master對客戶端將不能進行控制。可是,當客戶端檢查到鏈接斷開後,會按期向Master端請求註冊鏈接。apache

SaltStack經常使用模塊

  • pkg模塊:包管理,包括增刪更新。
  • file模塊:管理文件操做,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操做。
  • cmd模塊:在Minion上執行命令或者腳本。
  • user模塊:管理系統帳號操做。
  • service模塊:管理系統服務操做。
  • cron模塊:管理cron服務操做。

SaltStack批量部署並配置Apache

部署環境

角色 主機名 IP地址
master master 192.168.10.157
minion web1 192.168.10.161
minion web2 192.168.10.129

開始部署

SaltStack安裝
一、修改全部主機的主機名和hosts文件後重啓
master:

vim /etc/hostname 

master       //修改主機名

vim /etc/hosts

192.168.10.157   master
192.168.10.161   web1
192.168.10.129   web2

init 6       //重啓
web1:

vim /etc/hostname 

web1       //修改主機名

vim /etc/hosts

192.168.10.157   master
192.168.10.161   web1
192.168.10.129   web2

init 6       //重啓
web2:

vim /etc/hostname 

web2       //修改主機名

vim /etc/hosts

192.168.10.157   master
192.168.10.161   web1
192.168.10.129   web2

init 6       //重啓
二、三臺主機上安裝epel源
yum install epel-release -y
三、master上安裝salt-master
yum install salt-master -y
四、編輯master主機上的salt配置文件
vim /etc/salt/master

interface: 192.168.10.157         //15行,改成爲本機地址     

auto_accept: True    //215行,自動認證被控端的認證     

file_roots:          //416-418行,去掉註釋開啓 
  base:
    - /srv/salt         //這個目錄默認是沒有的,須要建立。

pillar_roots:      //529-531行, 去掉註釋開啓
  base:
    - /srv/pillar      //這個目錄默認是沒有的,須要建立。

pillar_opts: True    //552行,開啓pillar功能

nodegroups:          //710行,組的分類
  group1: 'web1'
  group2: 'web2'
五、查看修改的內容
cat /etc/salt/master | grep -v ^$ | grep -v ^#

自動化運維之SaltStack,批量安裝httpd實戰

六、建立salt目錄及pillar目錄
mkdir /srv/salt 
mkdir /srv/pillar
七、關閉防火牆和安全功能,開啓salt-master服務並查看4505端口和4506端口是否開啓
systemctl stop firewalld.service
setenforce 0      //關閉防火牆和安全功能

systemctl start salt-master.service  開啓服務
netstat -ntap | egrep '4505|4506'

自動化運維之SaltStack,批量安裝httpd實戰

八、在兩臺被控端web1,web2上安裝salt-minion
yum install salt-minion -y
九、編輯salt-minion的配置文件
vim /etc/salt/minion

master: 192.168.10.157     //16行,指定控制端IP
id: web1     //78行,指定本機主機名,web2則爲web2
十、兩臺被控端關閉防火牆和安全功能,開啓服務
systemctl stop firewalld.service
setenforce 0         //關閉防火牆和安全功能
systemctl start salt-minion.service      //開啓服務
十一、測試控制端與被控端的通訊狀態
salt '*' test.ping
web2:
    True
web1:
    True

自動化運維之SaltStack,批量安裝httpd實戰

SaltStack批量部署Apache
一、master上建立top.sls文件並寫入如下內容
vim /srv/salt/top.sls

base:
  '*':        //表示在全部的客戶端執行apache模塊
   - apache

自動化運維之SaltStack,批量安裝httpd實戰

二、master上建立apache.sls文件並寫入如下內容
vim /srv/salt/apache.sls

apache-service:
 pkg.installed:
   - names:
     - httpd
     - httpd-devel
 service.running:
   - name: httpd
   - enable: True

自動化運維之SaltStack,批量安裝httpd實戰

三、重啓salt-master服務
systemctl restart salt-master
四、刷新state配置命令,讓兩臺被控端去執行安裝apache
salt '*' state.highstate

web2:
----------
          ID: apache-service
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 15:22:08.547203
    Duration: 1363.436 ms
     Changes:   
----------
          ID: apache-service
    Function: pkg.installed
        Name: httpd-devel
      Result: True
     Comment: Package httpd-devel is already installed.
     Started: 15:22:09.910806
    Duration: 0.533 ms
     Changes:   
----------
          ID: apache-service
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 15:22:09.911959
    Duration: 360.802 ms
     Changes:   

Summary
------------
Succeeded: 3
Failed:    0
------------
Total states run:     3
web1:
----------
          ID: apache-service
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 15:22:08.546047
    Duration: 1364.252 ms
     Changes:   
----------
          ID: apache-service
    Function: pkg.installed
        Name: httpd-devel
      Result: True
     Comment: Package httpd-devel is already installed.
     Started: 15:22:09.910497
    Duration: 0.516 ms
     Changes:   
----------
          ID: apache-service
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 15:22:09.911733
    Duration: 375.981 ms
     Changes:   

Summary
------------
Succeeded: 3
Failed:    0
------------
Total states run:     3

自動化運維之SaltStack,批量安裝httpd實戰
接上圖
自動化運維之SaltStack,批量安裝httpd實戰
經過執行結果看到了三個ID,它們至關於三個任務,第一個安裝httpd,第二個安裝httpd-devel,第三個啓動。而且顯示三個都成功了,失敗爲零。vim

五、兩臺被控端上查看是否已安裝Apache並開啓

web1:
自動化運維之SaltStack,批量安裝httpd實戰
web2:
自動化運維之SaltStack,批量安裝httpd實戰安全

實驗完成服務器

相關文章
相關標籤/搜索