Automation 获得Saltstack Jinja模板中的仆从ip,该模板由支柱过滤

Automation 获得Saltstack Jinja模板中的仆从ip,该模板由支柱过滤,automation,jinja2,salt-stack,Automation,Jinja2,Salt Stack,我目前正忙于创建一个自动化的netdata临时集群,这意味着我有一个主netdata节点,从节点可以连接到该节点。 我发现了一个类似的,但我没有使用谷物,而是使用柱子 我正在尝试获取Netdata主ip,并通过模板将其分发给运行Netdata的仆从。但这也适用于其他主从配置(例如postgres、elasticsearch等) 我通过支柱分配角色。 因此,我的支柱文件如下所示: server: roles: - netdata-master - grafana 和我的jin

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

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

我通过支柱分配角色。 因此,我的支柱文件如下所示:

server:
  roles:
    - netdata-master
    - grafana
和我的jinja模板:

{% set netdatamaster = ..... %}
[stream]
  # stream metrics to another netdata
  enabled = yes

  # the IP and PORT of the master
  destination = {% netdatamaster %}:19999

现在我希望var
netdatamaster
包含netdatamaster的ipv4地址。我就是想不出一个办法。你可以用盐矿来做这个

首先向netdata主服务器添加一个mine_函数。这可以在支柱或minion配置文件中配置

mine_functions:
  eth0_ip_addrs:
    mine_function: network.ip_addrs
    interface: eth0
上述mine_功能允许其他仆从为netdata主服务器请求
network.ip_addrs
的值

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

  • 从cli:
    salt'other\u minion\u id'mine.get'netstat-master\u id'eth0\u ip\u addrs

  • 在您的州文件中:
    {{salt['mine.get']('netstat-master\u id','eth0\u ip\u addrs')}

在您的情况下,您可以将其放在Jinja模板文件的顶部。
{%set netdatamaster=salt['mine.get']('netstat-master\u id','eth0\u ip\u addrs')%}