salt配備了一個介面,以獲得關於底層的系統信息。這就是所謂的信息界面,因為它提供給salt一些信息。這種信息是minion啟動時就會收集,所以這種信息是靜態的,不會改變,就像操作系統名稱,內核名稱是不會變的。
使用方法:
1.匹配所有的centos客戶端
salt -G 'os:CentOS' test.ping2 . 匹配客戶端是否64位cpu,並返回cpu的核心數,這台虛擬機不是64位的,只是i386的機器
3.列出所有可以獲取的信息條目
salt '*' grains.ls4.列出客戶端所有的靜態信息
salt '*' grains.items
5.獲取客戶端單條靜態信息(例如:kernelrelease)
salt '*' grains.item kernelrelease
雖然grains的信息是靜態的,但是也是可以配置的
編輯/etc/salt/minion
添加以下內容重啟minion,再用salt '*' grains.items 就能看到自定義的信息,如果你不想把這些配置文件放入/etc/salt/minion,可以放到/etc/salt/grains (注意縮進)
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15
當你獲取到一台機的軟硬體的靜態信息了,一般就可以統計出所有機器資料,做出報表了,不用再費心思寫shell去查找一些信息了
擴展
1.可以自己寫一個grains模塊
2.可以把這種匹配放在pillar,更好的匹配你想要的客戶端
3.使用state.highstate或者saltutil.sync_grains或者saltutil.sync_all模塊同步grains信息
salt之複合匹配
在匹配類型前加個@,可以複合匹配
G graints匹配
E pcre正則表達式匹配
P 使用正則表達式匹配gaints
L 列出客戶端
I pallar匹配
S 子網和IP匹配
R 集群範圍匹配
salt之節點組
編輯/etc/salt/master文件,添加以下信息
nodegroups:
group1: 』L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com』
group2: 』G@os:Debian and foo.domain.com』
有了上面的多種匹配,就可以定義不同的客戶端進入不同的組,方便管理和執行命令
salt 限制同時執行
使用 -b 或--batch-size 限制同時執行的客戶端數
salt '*' -b 10 test.ping
salt -G 'os:RedHat' --batch-size 25% apache.signal restart
第一條命令的意思是,所有的主機執行test.ping,但是同時只有10台機在運行,其它機在等待,當有一台機執行返回,輪到下一台機執行,始終保持10台機在運行
第二條命令的意思是,匹配出客戶端后,總數的25%的客戶端在執行重啟apache
這個命令還是挺有意思,不會大範圍同時執行,而是分批執行
用grains匹配比較慢,估計是會搜索全部的minion的grains,而匹配id比較快。
[火星人
]
salt之grains,節點組,複合匹配,同時執行已經有640次圍觀
http://coctec.com/docs/service/show-post-29.html