SaltStack扩展组件

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