http://www.cnblogs.com/caoxiaojian/p/5084494.html
doc
https://docs.saltstack.com/en/latest/
目錄
遠端執行
Returners
配置管理
目标(Targeting)
子產品(Module)
傳回(Returnners)
Targeting目标
1、Globbing and regex
比對minions 通過通配符和正規表達式,與minion ID有關系。
連結:使用通配符和正規表達式來比對
2、Grains
用來比對minion的grains,是指那些關于minion主機的靜态資訊,比如OS,軟體版本,虛拟化,CPU,記憶體等等。
連結:使用Grains來比對
3、Pillar
通過使用者定義的變量比對minion主機
連結:使用Pillar來比對
4、Subnet/IP Address
通過子網或IP位址比對minion主機(目前僅支援IPV4)。
連結:通過IP/subnet來比對
5、Compound matching
把上面的全部比對器組合為一個表達式。
連結:使用組合集合比對
6、Node groups
在master配置檔案中靜态定義minion組,使用:ref:複合 <targeting-compound> 比對文法。
連結:使用節點組比對
7、Batching execution
一些指令集在比對上的minions時隻需要執行一次。
連結:隻要執行一次的内容
Modules子產品
使用者權限的限制
# 設定使用者名:larry,和可以執行的指令
[root@linux-node1 ~]# vim /etc/salt/master
245 client_acl:
246 larry:
247 - test.ping
248 - network.*
Salt傳回接收器(returner)允許把minion的響應儲存在各種資料存儲或不同的位置,甚至把響應内容顯示在指令行
Returner可以用來擴充Salt,和新的、定制的接口和支援新的資料庫進行通信。
vim /etc/salt/master
#return: mysql
master_job_cache: mysql
mysql.host: '10.0.0.7'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
此種方式是主動去Minion端擷取,推薦使用。
如果不加job_cache,開啟上面的return,就是被動接收。需要用戶端也要修改配置檔案,添加同樣的内容。
檢查是否生效
/etc/init.d/salt-master restart
salt '*' saltutil.refresh_pillar
[root@linux-node1 ~]# /etc/init.d/salt-master restart
[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar
linux-node1.example.com:
True
linux-node2.example.com:
[root@linux-node1 ~]# salt '*' test.ping
# 資料庫中檢查有麼有擷取到資料(主動去minion端擷取)
mysql> use salt;
mysql> select * from salt_returns;
file_roots:
base:
- /srv/salt/base
test:
- /srv/salt/test
prod:
- /srv/salt/prod
# 執行方式一
# 執行狀态(單獨執行某個狀态)
[root@linux-node1 files]# salt '*' state.sls dns
# 到minion端檢視
[root@linux-node2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
#########
# 執行方式二
# 如果想使用進階狀态執行,需要在top.sls中寫明
[root@linux-node1 files]# vim /srv/salt/base/top.sls
base:
'*':
- dns
# 執行進階狀态,從top.sls中讀取,在執行
[root@linux-node1 files]# salt '*' state.highstate
jinja模版
jinja模版的建立
# jinja模版
# 有- template: 就代表這個檔案就是一個模版檔案
# - defaults: 是變量清單
[root@linux-node1 base]# vim dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://files/resolv.conf
- user: root
- group: root
- mode: 644
- template: jinja
- defaults:
DNS_SERVER: 10.0.0.2
jinja模版的使用
# 模闆檔案裡面變量使用方式` DNS_SERVER `
[root@linux-node1 base]# vim /srv/salt/base/files/resolv.conf
# nameserver 10.0.0.2
nameserver ` DNS_SERVER `
# 執行進階狀态
[root@linux-node1 base]# salt '*' state.highstate
# minion端檢視,nameserver 自動将變量代換
jinja模版中使用Grains
# 使用grains
[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf
# {{ grains['fqdn_ip4'] }}
# minion端檢視
# ['10.0.0.8']
還可以在jinja模版中使用執行子產品和Pillar