1. 程式人生 > >Linux的企業-自動化運維工具Saltstack(grains、pillar)

Linux的企業-自動化運維工具Saltstack(grains、pillar)

saltstack grains、pillar jinja、haproy+keeplived

配置內容接上篇

redhat6.5

server1 172.25.29.1 salt-master

server2 172.25.29.2 salt-minion haproy+keeplived

server3 172.25.29.3 salt-minion nginx

server4 172.25.29.4 salt-minion nginx

server5 172.25.29.5 salt-minion haproy+keeplived

做之前配置好本地解析

一.Grains

grains是minion第一次啟動的時候采集的靜態數據,可以用在salt的模塊和其他組件中。其實grains在每次的mini

on啟動(重啟)的時候都會采集,即向master匯報一次的。


二.minion端配置grains


修改server3和server4的salt-minion,設定nginx角色

技術分享



在server3和server4的/etc/salt下創建grains,內容如下

技術分享

技術分享

技術分享


3.測試grains的數據

技術分享


技術分享


4.修改top.sls文件並推送

技術分享

技術分享

推送成功

技術分享


三.mster端配置grains,不用重啟服務

1.在master端創建_grains文件

技術分享

技術分享


2.修改server3和server4的grains或者是刪除grains文件,做到不影響下面master這邊的grains


技術分享

技術分享

技術分享


2.向server3和server4同步grains


技術分享


查看server3和server4的salt緩存

技術分享

技術分享


3.修改top.sls推送文件

技術分享

推送成功

技術分享


四.pillar用法

grain和pillar區別

(1)grains存儲的是靜態、不常變化的內容,pillar則相反

(2)grains是存儲在minion本地,而pillar存儲在master本地

(3)minion有權限操作自己的grains值,如增加、刪除,但minion只能查看自己的pillar,無權修改


1.配置pillar

修改server1上的master配置文件,開通pillar base目錄,可以與grains共存


技術分享

技術分享


采集主機名

技術分享


2.設置不同的主機名推送安裝不同的服務

技術分享

技術分享


技術分享


3.在pillar下創建一個新的top.sls推送文件

技術分享

刷新

技術分享


4.檢測和查看的相關命令

查看采集的推送項目,按照不同的主機名通過pillar下的web.sls做不同的事情

技術分享

技術分享

技術分享

技術分享


通過salt采集server3開啟的服務

技術分享


遠程重啟server3的nginx服務

技術分享


將master server1上的文件群傳給minion端

技術分享


群查看minion的/tmp下的文件,已經傳過來了

技術分享


遠程查看passwd文件

技術分享


遠程給server4安裝htppd文檔

技術分享


遠程給server4安裝losf工具

技術分享



五.jinja模版的使用

Jinja是基於python的模板引擎,在saltstack中我們使用yaml_jinja渲染器來根據模板生產對應的配置文件,對於不同的操作系統或者不同的情況通過jinja可以讓配置文件或者操作形成一種模板的編寫方式。


模版文件裏面變量使用{{名稱}},例如{{PORT}}

變量使用Grains:{{ grains[‘fqdn_ip4‘] }}

變量使用執行模塊:{{ salt[‘network.hw_addr‘](‘eth0‘) }}

變量使用Pillar:{{ pillar[‘apache‘][‘PORT‘] }}


1.jinja模版配置

以httpd下的web.sls為例,添加模版,端口,地址

技術分享

技術分享


2.修改files下的httpd.conf配置文件為變量格式

技術分享

技術分享


3.用jinja模版推送httpd服務

技術分享

技術分享

server3 httpd服務8080端口正常

技術分享



六.jinja模版的另外三種實現方法

1.方法一

技術分享

在httpd.conf配置文件的最上面添加變量模塊

技術分享

下面的監聽端口上按python的方式取值

技術分享

在files下面新建 vim lib.sls

技術分享


將之前的web.sls裏的template下面註釋掉

技術分享

用jinja模版給server3推送httpd服務

技術分享

技術分享



2.方法二

將httpd.conf裏剛才上面寫的刪除,因為會與下面的這個方法沖突

技術分享


監聽端口修改為下圖所示

技術分享

將web.sls文件修改為以下設置

技術分享


vim lib.sls

技術分享

技術分享



方法三:使用pillar

進入到pillar的base目錄下

技術分享


(1)配置文件第一種寫法

技術分享

vim httpd.conf

技術分享


(2)配置文件第二種寫法

技術分享

vim httpd.conf

技術分享


推送

技術分享

salt server4 state.sls httpd.web


技術分享



七.salt自動化推送keepalived+nginx

1.配置keepalived salt文件

技術分享

vim keepalived.conf,添加vip

技術分享


vim install.sls

技術分享

技術分享

vim service.sls

技術分享

單擊keepalived推送成功


2.由於keepalived高可用,主備的配置文件不一樣,需要添加jinja模版

技術分享


在install.sls裏添加jinja模版

技術分享


keepalived.conf裏的state和priority寫成變量

技術分享


3.新添加一臺虛擬機server5做keepalived的高可用

技術分享

將server5加入到salt-key

技術分享

技術分享


4.修改top.sls文件並推送

技術分享

技術分享


5.查看推送結果

haproy+keeplived正常啟動,vip在主上

技術分享


將主server2上的keepalived關閉,服務到備server5上

技術分享


負載均衡haproxy正常

技術分享

技術分享



Linux的企業-自動化運維工具Saltstack(grains、pillar)