SaltStack自動化批量部署Apache
SaltStack 是一種基於 C/S 架構的服務器基礎架構集中化管理平臺,管理端稱為 Master,客戶端稱為 Minion;SaltStack 具備配置管理、遠程執行、監控等功能;SaltStack 本身是基於 Python 語言開發實現,結合了輕量級的消息隊列軟件 ZeroMQ 與 Python 第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack 和 PyYAML 等)構建。
通過部署 SaltStack 環境,運維人員可以在成千上萬臺服務器上做到批量執行命令,根據不同的業務特性進行配置集中化管理、分發文件、采集系統數據及軟件包的安裝與管理等。
SlatStack特性:
- 部署簡單、管理方便;
- 支持大部分的操作系統,如 Unix/Linux/Windows 環境;
- 架構上使用C/S管理模式,易於擴展;
- 配置簡單、功能覆蓋廣;
- 主控端(Master)與被控端(Minion)基於證書認證,確保安全可靠的通信;
- 支持 API 及自定義 Python 模塊,輕松實現功能擴展。
SlatStack常用模塊:
- pkg模塊---包管理,包括增刪更新
- file模塊---管理文件操作,包括同步文件、設置權限和所屬用戶組、刪除文件等操作
- cmd模塊---在minion上執行命令和腳本
- user模塊---管理系統賬戶操作
- service模塊---管理系統服務操作
- cron模塊---管理cron服務操作
SlatStack三大組件:
Grains:靜態組件,minion啟動時收集信息。
Pillar:動態組件,定義變量、信息,密碼。
State:核心功能,通過制定好的sls文件對被控主機進行管理。
SlatStack工作模式:
1、slatstack通信模式
- Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,並從 Master 端得到資源狀態信息,同步資源管理信息。
- Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
- ZeroMQ 是一款開源的消息隊列軟件,用於在 Minion 端與 Master 端建立系統通信橋梁。
- Daemon 是運行於每一個成員內的守護進程,承擔著發布消息及通信端口監聽的功能。
2、slatstack執行原理
- Minion 是 SaltStack 需要管理的客戶端安裝組件,會主動去連接 Master 端,並從 Master 端得到資源狀態信息,同步資源管理信息。
- Master 作為控制中心運行在主機服務器上,負責 Salt 命令運行和資源狀態的管理。
- Master 上執行某條指令通過隊列下發到各個 Minions 去執行,並返回結果。
SlatStack部署
實驗拓撲:
實驗環境:
角色 | 主機名 | 操作系統 | IP地址 |
---|---|---|---|
master | master.saltstack.com | CentOS7 | 192.168.37.128 |
minion | web01.saltstack.com | CentOS7 | 192.168.37.130 |
minion | web02.saltstack.com | CentOS7 | 192.168.37.131 |
部署過程:
一、三臺服務器的準備工作
1、分別修改主機名
vim /etc/hostsname #master主機
master.saltstack.com
vim /etc/hostsname #minion主機
web01.saltstack.com
vim /etc/hostsname
web02.saltstack.com
2、修改hosts文件(三臺相同)
192.168.37.128 master.saltstack.com
192.168.37.130 web01.saltstack.com
192.168.37.131 web02.saltstack.com
3、安裝epel源
yum install -y epel-release
4、重啟服務後關閉防火墻及安全功能
init 6
systemctl stop firewalld.service
setenforce 0
二、master控制器上安裝salt
1、安裝salt包
yum install -y salt-master
2、修改主配置文件
vim /etc/salt/master
//15行
interface: 192.168.37.128 #監聽地址
//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: #pillar主目錄
base:
- /srv/pillar
3、查看配置文件中修改內容(註意:配置文件中內容原先全部註釋掉,只有修改過的才會過濾出來)
cat /etc/salt/master | grep -v ^$ | grep -v ^#
4、創建配置文件中目錄
mkdir /srv/salt
mkdir /srv/pillar
5、開啟服salt-master務
systemctl start salt-master.service
netstat -ntap | egrep ‘4505|4506‘
三、minion被控制端上安裝salt
1、安裝salt包
yum -y install salt-minion
2、修改配置文件
vim /etc/salt/minion
//16行
master: 192.168.37.128 #指定主控端IP
//78行
id: web01.saltstack.com #被控制端主機名,另一臺需改此處
3、開啟salt-minion服務
systemctl start salt-minion.service
四、master上演示控制狀態
1、測試與被控制端的通信狀態
salt ‘*‘ test.ping
2、遠程執行命令
salt ‘*‘ cmd.run ‘df -h‘
3、查看master上接受的客戶端
salt-key
4、查看被控制主機上grains所有值
salt ‘web01.saltstack.com‘ grains.items
salt ‘web01.saltstack.com‘ pillar.items
批量部署安裝Apache
1、引導腳本
vim /etc/srv/salt/top.sls
base: #*--表示所有客戶端執行Apache模塊
‘*‘:
- apache #調用Apache文件
2、安裝apache腳本
vim /srv/salt/apache.sls
apache-service: #apache-service是自定義id名
pkg.installed: #pkg.installed為安裝包函數
- names:
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
3、重啟服務
systemctl restart salt-master.service
4、執行安裝命令
salt ‘*‘ state.highstate
5、最後,查看被控制端服務器apache安裝是否成功
SaltStack自動化批量部署Apache