Salt Mine

Salt mine 可以在一定的控制内让 minion 拿到其它 minion 的信息 。 实现原理是 : 通过配置 , 让 minion 定期 ( 最短为 1 分钟 ) 的向 master 发送数据 , 而其它 minion 可以从 master 拿到这些数据 。 一定程度上实现的 minion 之间的通迅 。 在搭建 cluster 时 , 十分有用 。

可以通过两种方法来配置 :

  1. minion 的配置文件
  2. master 的 pillar

使用 minion 配置时 , 要直接修改 minion 的配置文件 , 在 /etc/salt/minion.d/mine.conf 加入如下内容

mine_functions:
  test.ping: []
  network.ip_addrs:
    interface: eth0

使用 pillar 时配置时 , 只需要修改 master 的 pillar 配置即可 。 如在 /srv/pillar/mine.conf 中加入如下内容

mine_functions:
  test.ping: []
  network.ip_addrs:
    interface: eth0

然后把 mine.conf 加入到 /srv/pillar/top.sls, 这时可以指定哪些 minion 来配置 mine_functions。 相比较而言 , 这种方式更加灵活一些 。

base:
  'controller*':
    - mine

之后就可以使用如下语句拿到 mine 上报上来的结果的 ( 其实这个结果是保存在 master 的 /var/cache/salt/master/minions/*/mine.p 的文件下就可找到上报上来的内容 。

$ salt 'jeffrey-thinkpad' mine.get '*' network.ip_addrs
jeffrey-thinkpad:
    ----------
    icehouse-compute:
        - 10.0.0.11
    icehouse-controller:
        - 10.0.0.10

另外 , 可以在 minion 上来修改上报的时间间隔 。 方法是增加 / 修改 /etc/salt/minion.d/mine.conf

mine_interval: 1

REF

  1. Salt Mine

Comments