获取Saltstack Jinja模板中的Minion IP,按支柱过滤

时间:2018-07-19 07:55:18

标签: automation jinja2 salt-stack

我目前正忙于创建一个自动的Netdata临时集群,这意味着我有一个主Netdata节点,从属节点连接到该节点。 我发现了类似的question + answer,但是我没有使用谷物,而是使用了支柱。

我正在尝试获取Netdata主IP,并通过模板将其分发给运行Netdata的奴才。但这也可以应用于其他主从配置(例如postgres,elasticsearch等)

我正在通过支柱来分配角色。 所以我的支柱文件看起来像:

<div class="list-group">
    <a href="#" class="list-group-item">Add New entry</a>
    <a class="list-group-item">Disabled entry</a>
</div>

还有我的jinja模板:

server:
  roles:
    - netdata-master
    - grafana

现在,我希望var {% set netdatamaster = ..... %} [stream] # stream metrics to another netdata enabled = yes # the IP and PORT of the master destination = {% netdatamaster %}:19999 包含Netdata master的ipv4 adres。我只是想不出办法。

1 个答案:

答案 0 :(得分:1)

您可以使用盐矿。

首先将mine_function添加到您的netdata-master服务器。可以在支柱中或在minion配置文件中进行配置。

mine_functions:
  eth0_ip_addrs:
    mine_function: network.ip_addrs
    interface: eth0

上面的mine_function使其他奴才可以为您的netdata-master服务器请求network.ip_addrs的值。

您可以通过不同的方式请求此数据:

  • 来自cli:
    salt 'other_minion_id' mine.get 'netstat-master_id' eth0_ip_addrs

  • 在您的状态文件中:
    {{ salt['mine.get']('netstat-master_id', 'eth0_ip_addrs') }}

您可以将其放在Jinja模板文件的顶部。
{% set netdatamaster = salt['mine.get']('netstat-master_id', 'eth0_ip_addrs') %}

相关问题