6、grains使用以及cmd.runnode
grains.items主要用來收集minion端的信息,方便進行信息採集,後續的pillar使用,根據硬件信息自動匹配配置文件等,基本用法:shell
#salt 「*」 grains.ls #顯示全部minion的item安全
#salt 「*」 grains.items #顯示全部minion的item值session
#salt 「*」 grains.item osshell #顯示os的相關信息,若是多個item,用空格分隔ssh
除了salt自帶的items能夠獲取到系統信息以外,咱們還可使用shell命令,咱們能夠藉助salt另外一個強大的命令:cmd.run,假如咱們須要獲取minion端的內存信息ide
#salt 「*」 cmd.run 「free-m」ui
若是想要在minions執行腳本程序,可使用cmd.script命令加密
#salt 「*」 cmd.scriptsalt://test.shspa
其中salt://test.sh是腳本的存放路徑操作系統
7、states文件
salt states的核心是sls文件,該文件使用YAML語法定義了一些K/V的數據,sls文件存放路徑在master配置文件中定義,默認爲/srv/salt,若是目錄不存在,則手動建立,在salt中能夠經過salt://代替根路徑,例如,能夠經過salt://top.sls訪問/srv/salt/top.sls,在states中top文件也由master配置文件定義,默認爲top.sls,該文件爲states的入口文件。
一個簡單的top.sls文件以下
base:
"*": #匹配全部minion主機
- httpd #定義state.sls的名字
minion: #經過分組名匹配,必需要定義match:nodegroup
- match:nodegroup
- httpd
"os:CentOS": #經過grains模塊匹配,必需要定義match:grain
- match:grain
- httpd
接下來咱們就能夠編寫httpd.sls文件了(注意每行的縮進和空格,縮進爲2個空格,冒號後面一個空格)
httpd: #ID說明,表示能夠被操做的名字
pkg: #包管理
- name: httpd #包的名稱
- installed #包的狀態(installed:安裝;remove:卸載)
service: #服務管理
- name: httpd #服務名稱
- running #服務狀態
- reload: True #是否容許reload
- require: #依賴關係
- pkg: httpd
- watch: #監測是否發生改變
- file:/etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf: #定義文件
file:
- managed #文件管理
- source: salt://httpd.conf #源文件路徑
- user: root #文件屬主
- group: root #文件屬組
- mode: 644 #文件權限
- backup: minion #更改前備份
強制執行下httpd.sls
[root@master salt]# salt"*" state.sls httpd
state的邏輯關係:
include: 包含某個文件,例如,我新建一個test.sls,就能夠繼承httpd相關配置而沒必要從新編寫
match: 匹配某個模塊 ,好比 以前定義top.sls時候的 match:grain match: nodegroup
require: 依賴某個state,在運行此state前,先運行依賴的state,依賴能夠有多個 好比文中的httpd模塊內,相關的配置必需要先依賴httpd的安裝
watch: 在某個state變化時運行此模塊,文中的配置,相關文件變化後,當即執行相應操做
order: 優先級比require和watch低,有order指定的state比沒有order指定的優先級高
8、pillar的定義及使用
Pillar是Salt很是重要的一個組件,它用於給特定的minion定義任何你須要的數據,這些數據能夠被Salt的其餘組件使用。這裏能夠看出Pillar的一個特色,Pillar數據是與特定minion關聯的,也就是說每個minion都只能看到本身的數據,因此Pillar能夠用來傳遞敏感數據(在Salt的設計中,Pillar使用獨立的加密session,也是爲了保證敏感數據的安全性)。另外還能夠在Pillar中處理平臺差別性,好比針對不一樣的操做系統設置軟件包的名字,而後在State中引用等。
默認狀況下,master配置文件中的全部數據都添加到pillar中,且對全部minion可用,在master的配置文件中咱們須要配置下,若是/srv/pillar目錄不存在則手動建立,和state同樣,pillar也是須要一個top.sls文件做爲一個入口,用來指定對象,配置方式與state同樣
編輯top.sls文件
base:
"*":
- test
編輯test.sls文件
test_path: "salt://httpd.conf"
test_user: root
test_group: root
能夠在state文件中引用pillar數據
/etc/httpd/conf/httpd.conf:
file:
- managed
- source: {{ pillar['test_path'] }}
- user: {{ pillar['test_user'] }}
- group: {{ pillar['test_group'] }}
咱們還能夠在pillar中加入判斷條件,這裏就很少說了,
更多高級用法請參考官網文檔中文地址:http://docs.saltstack.cn/zh_CN/latest/