自動化運維之saltstack初體驗
SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。
通過部署SaltStack,我們可以在成千萬臺服務器上做到批量執行命令,根據不同業務進行配置集中化管理、分發文件、采集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。
saltstack組件:
1、Salt Master:中心管理系統。此系統用於將命令和配置發送到在受管系統上運行的Salt minion。
2、Salt Minions:被管理的系統。 該系統運行Salt minion,它從Salt master接收命令和配置。
3、Execution Modules:從命令行針對一個或多個受管系統執行臨時命令。 對以下管理場景有幫助:
● 實時監控,狀態和盤點
● 一次性命令和腳本
● 部署關鍵更新
4、Formulas (States):一種系統配置的聲明性或命令式表示。
5、Grains:系統變量。 Grains是有關底層受管系統的靜態信息,包括操作系統,內存和許多其他系統屬性。 您還可以為任何系統定義自定義grains。
6、Pillar:用戶定義的變量。 這些安全變量被定義並存儲在Salt Master中,然後使用目標“分配”給一個或多個minions。 pilla數據存儲諸如端口,文件路徑、配置參數和密碼之類的值。
7、Top File:將formulas和pilla數據與Salt minions匹配。
8、Runners:在Salt master上執行的模塊,用於執行支持任務。 Salt runners報告作業狀態、連接狀態、從外部API讀取數據,查詢連接的Salt minions等。例如,Orchestrate運行器協調跨多個系統的配置部署。
9、Returners:將Salt minions返回的數據發送到另一個系統,例如數據庫。 Salt Returners可以在Salt minion或Salt master上運行。
10、Reactor:在SaltStack環境中發生特定事件時觸發相應的響應。
11、Salt SSH:在沒有Salt minion的系統上通過SSH運行Salt命令。
saltstack部署:
環境如下:
服務器 | IP地址 | 角色 | saltstack軟件 |
---|---|---|---|
Centos7 | 192.168.71.129 | master | salt-master |
Centos7 | 192.168.71.130 | minion | salt-minoin |
Centos7 | 192.168.71.131 | minion | salt-minoin |
一、管理端配置
1、修改服務器主機名
master管理端:
[root@bogon ~]# hostnamectl set-hostname master.saltstack.com
minion被管理端1:
[root@bogon ~]# hostnamectl set-hostname web01.saltstack.com
minion被管理端2:
[root@bogon ~]# hostnamectl set-hostname web02.saltstack.com
重啟服務器生效主機名或使用bash命令
2、修改hosts文件解析
vim /etc/hosts #每天都需要添加hosts解析文件
192.168.71.129 master.saltstack.com
192.168.71.130 web01.saltstack.com
192.168.71.131 web02.saltstack.com
3、管理端安裝salt-master
yum install epel-release -y #要先安裝epel源
yum install salt-master -y
4、修改salt-master配置文件
[root@master ~]# vim /etc/salt/master #配置文件位置
15行 interface: 192.168.71.129 #監聽地址改成主機IP
215行 auto_accept: True #證書認證
416行 file_roots: #開啟站點目錄
417行 base:
418行 - /srv/salt
552行 pillar_opts: True #開啟pillar功能,同步文件功能
529行 pillar_roots: #開啟pillar站點
530行 base:
531行 - /srv/pillar
710行 nodegroups:
711行 group1: ‘web01.saltstack.com‘ #被管理端主機名
712行 group2: ‘web02.saltstack.com‘
5、檢查修改的配置文件正確性
6、創建配置文件中對應的目錄
[root@master ~]# mkdir /srv/salt
[root@master ~]# mkdir /srv/pillar
7、開啟服務
[root@master ~]# systemctl start salt-master.service #開啟服務
[root@master ~]# netstat -ntap | egrep ‘4505|4506‘ #檢查端口,egrep匹配正則表達式
tcp 0 0 0.0.0.0:4505 0.0.0.0: LISTEN 36663/python
tcp 0 0 0.0.0.0:4506 0.0.0.0: LISTEN 36676/python
二、被管理端配置
1、安裝salt-minion
[root@web01 ~]# yum install epel-release -y #安裝epel源
[root@web01 ~]# yum install salt-minion -y #安裝salt-minion
2、修改配置文件
[root@web01 ~]# vim /etc/salt/minion
16行 master: 192.168.175.129 #指向管理端地址
78行 id: web01.saltstack.com #自身主機名
3、開啟服務
[root@web01 ~]# systemctl start salt-minion.service
三、群集部署初體驗
1、在管理端檢測被管理主機狀態
2、編寫安裝apache任務文件
[root@master ~]# vim /srv/salt/top.sls #文件以sls結尾
[root@master ~]# vim /srv/salt/apache.sls
4、管理端重啟服務
[root@master salt]# systemctl restart salt-master.service
5、執行部署的任務
[root@master salt]# salt ‘*‘ state.highstate #針對所有主機執行
6、執行結果
7、被管理端檢查部署情況
自動化運維之saltstack初體驗