歡迎您光臨本站 註冊首頁

salt之grains,節點組,複合匹配,同時執行

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

   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