Salt中的mine用来从minion收集数据,并存放在master上,之后所有的minion都可以通过salt.modules.mine
访问到这些数据。因为我们即将要进行的一个实战会用到mine,所以我们这一节详细说一说mine的用法。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
mine vs grains
前面我们学习了grains,也就是master收集的关于minion的一些静态信息,例如os版本,ip信息,内存硬盘大小等等。而mine是master通过在minion上执行预先定义的salt.modules
中的函数来收集信息。
grains中的数据主要是用来对minion进行筛选用的,而mine中的数据主要是为了方便在minion之间传递数据用的。
mine比grains的数据要更加实时,通过Mine Interval
这个配置项去设置周期。当然两者都可以手动进行实时刷新。
mine的定义和基本使用
使用mine,只需要在mine_functions
关键字下面规定需要在minion上执行的函数即可,如果函数有参数也要一起带上。可以通过pillar或者是minion的配置文件去将mine下发给minion。我们采用pillar下发的方式来举例,例如,在master的/srv/pillar/mine_test.sls
中创建pillar内容如下
mine_functions:
test.ping: []
network.ip_addrs:
interface: eth1
cidr: 192.168.0.0/16
其中相当于定义了两个mine的条目。注意这里并没有表示list的短横线,虽说经过我自己测试加上短线也是没问题,但是在salt.modules.pillar.items
中显示的有点怪,同时salt.modules.mine.valid
去检查mine定义的时候也会报错。同样的如果没有参数就用空的list来表示。
然后在/srv/pillar/top.sls
中将这个pillar分发给所有的minion
base:
'*':
- mine_test
然后进行下发
root@saltmaster:/srv/pillar# salt '*' saltutil.refresh_pillar
之后就可以看到所有的minion带上了这两个pillar
root@saltmaster:/srv/pillar# salt '*' pillar.items
minion1:
----------
mine_functions:
----------