1. 程式人生 > >自動化運維之saltstack初體驗

自動化運維之saltstack初體驗

pyyaml centos 連接 state nag tex 表達 做到 minion

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初體驗