saltstack安裝管理——批量部署apache

簡介

Salt是一個基礎平臺管理工具,基於 python 語言開發。SaltStack 採用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信。master監聽4505和4506端口,4505爲master和minion認證通信端口,4506爲master用來發送命令或者接收minion的命令執行返回信息。

saltstack 介紹:

1、輕量級管理工具,批量執行命令;

2、常用模板:

pkg:包,有增刪更新;
file:用於管理文件,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操作;
cmd:在 minion 上執行命令或者腳本;
user:管理系統賬戶操作;
service:管理系統服務操作;
cron:管理 crontab任務
3、saltstack 數據系統:

Grains(靜態數據);
pillar(動態數據);
4、三大功能:
(1)遠程執行
(2)配置管理
(3)雲管理

重要組件:

(1)grains:

grains 是在 minion(客戶端)啓動時收集到的一些信息,比如操作系統類型、網卡ip等靜態信息。
grains 的信息並不是動態的,並不會時時變更,它只是在 minion 啓動時收集到的。
(2)pillar:

pillar 和 grains 不一樣,是在 master 上定義的,並且是針對 minion 定義的一些信息。像一些比較重要的數據(密碼)可以存在 pillar 裏,還可以定義變量等。
(3)state:

是 saltstack 的最核心的功能,通過預先指定好的 sls 文件對 被控主機進行管理(包括:包、網絡配置、系統服務、系統用戶 等)

工作原理:

SaltStack 客戶端(Minion)在啓動時,會自動生成一套密鑰,包含私鑰和公鑰。之後將公鑰發送給服務器端,服務器端驗證並接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列 ZeroMQ 在客戶端與服務端之間建立消息發佈連接。
saltstack安裝管理——批量部署apache

1、Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,並從 Master 端得到資源狀態信息,同步資源管理信息。
2、Master 作爲控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理,Master 上執行某條指令通過隊列下發到各個 Minions 去執行,並返回結果。
3、ZeroMQ 是一款開源的消息隊列軟件,用於在 Minion 端與 Master 端建立系統通信橋樑。

與ansible區別:

1、管理配置講究的是更快更穩
ansible基於SSH協議傳輸數據;Saltstack使用消息隊列zeroMQ傳輸數據,速度更快,是ssh的40倍。
2、ansible安裝部署過程特別簡單,saltstack要部署 minion 端較爲不便。

實操——批量安裝 Apache服務

saltstack安裝管理——批量部署apache
1、修改主機名

修改主機名:
[root@localhost ~]# hostnamectl set-hostname master.saltstack.com
[root@localhost ~]# hostnamectl set-hostname web01.saltstack.com
[root@localhost ~]#  hostnamectl set-hostname web02.saltstack.com

修改 /etc/hosts文件(用scp遠程複製,三臺主機都一樣):
vim /etc/hosts
192.168.220.131 master.saltstack.com
192.168.220.140 web01.saltstack.com
192.168.220.136 web02.saltstack.com

關閉防火牆:
systemctl stop firewalld.service
setenforce 0

分別爲三臺主機添加epel源:
yum install -y epel-release

2、安裝 saltstack:

1、master上安裝:
yum install -y salt-master

2、被管理端(minion)上安裝:
yum install -y salt-minion

3、配置 master主機:

vim  /etc/salt/master 

interface: 192.168.220.131   //修改監聽地址(master的地址)
auto_accept: True            //修改爲true,避免要運行salt-key來確定證書認證

file_roots:                  //開啓saltstack文件根目錄位置,此目錄需要自己創建
   base:
     - /srv/salt

nodegroups:                  //開啓、設置組分類
   group1: 'web01.saltstack.com'
   group2: 'web02.saltstack.com'

pillar_opts: True            //開啓pillar功能,同步文件功能

pillar_roots:                //開啓pillar主目錄,這個也需要自己創建
   base:
     - /srv/pillar

saltstack安裝管理——批量部署apache
4、開啓服務:

[root@master ~]# systemctl start salt-master.service 
[root@master ~]# netstat -napt | egrep '4506|4505'
tcp        0      0 192.168.220.131:4505    0.0.0.0:*               LISTEN      68112/python        
tcp        0      0 192.168.220.131:4506    0.0.0.0:*               LISTEN      68136/python 

(5)配置 minino 端:

vim  /etc/salt/minino
第一臺:
master: 192.168.220.131        //第16行,指定主控端IP地址
id: web01.saltstack.com        //第78行,指定被控制端的主機名
第二臺:
master: 192.168.220.131       
id: web02.saltstack.com 

systemctl start salt-minion.service   //開啓服務

(6)在主控端測試與被控端的通信狀態

[root@master ~]# salt '*' test.ping   //查看通信狀態
web01.saltstack.com:
    True
[root@master ~]# salt '*' test.ping
web01.saltstack.com:
    True
web02.saltstack.com:
    True

salt '*' cmd.run 'df -h'      //查看所有被管理段的掛載情況

[root@master ~]# salt-key      //查看在master上已經被接受過的客戶端
Accepted Keys:
web01.saltstack.com
web02.saltstack.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:

查看被監控主機上grains所有值(每次minino在啓動時都會獲取客戶端信息):
salt 'web01.saltstack.com' grains.items (靜態數據)
salt 'web01.saltstack.com' pillar.items (動態數據)

(7)開始批量安裝Apache服務:
下面演示的是遠程通過 yum 安裝 Apache :

mkdir /srv/salt

vim /srv/salt/top.sls
base:
  '*':    
    - apache
//注意:'*',則表示在所有的客戶端執行 apache 模塊。

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 表示開機啓動。

saltstack安裝管理——批量部署apache
saltstack安裝管理——批量部署apache

systemctl restart salt-master    //重啓服務
salt '*' state.highstate         //執行刷新state配置命令

saltstack安裝管理——批量部署apache
saltstack安裝管理——批量部署apache
接下來,去兩臺 minino上驗證一下 httpd是否安裝成功:
saltstack安裝管理——批量部署apache
saltstack安裝管理——批量部署apache

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