1、擴展Grainspython
雖然Grains能收集到Minion的各類靜態信息,可是爲了知足更加複雜的應用,但願Grains能根據咱們的需求去採集一些信息,例如大批量機器中咱們區分每臺設備的業務角色,這個時候咱們就能夠本身定義一個Grains,讓Minion經過外部數據(CMDB)去採集本身的業務彙報給Master。在大規模的配置中,咱們就能夠利用這個Grains值去更佳方便地管理配置各個角色的設備。shell
1.擴展Grains流程code
第一步,咱們須要在Master上編寫一個Python腳本。這個腳本的主要內容就是去定義如何收集你想要的信息,在腳本的最後把採集到的各類信息返回。cmd
第二步,須要把這個腳本sync同步到全部的Minion上。同步
第三步,重啓Minion服務,由於sync同步grains腳本的時候minion就會去採集刷新Grains。string
[root@salt-master-1 ~]# cat /srv/salt/_grains/example.py #!/usr/bin/env python def grains(): local = {} test = { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' } local['list'] = [1,2,3,4] local['string'] = 'str' local['dict'] = test return local
把這個腳本同步到Minion上去:
it
[root@salt-master-1 salt]# salt 'salt-minion-1' saltutil.sync_grains # [root@salt-master-1 salt]# salt 'salt-minion-1' cmd.run 'ls /var/cache/salt/minion/extmods/grains/' # [root@salt-master-1 salt]# salt 'salt-minion-1' grains.item list