首页 文章

获取在柱子过滤的Saltstack Jinja模板中的minion ip

提问于
浏览
0

我'm currently busy creating a automated netdata ephemeral cluster, which means I have a master netdata node which the slaves connect to. I'发现了一个类似的question + answer,但我没有使用谷物,而是使用支柱 .

我正在尝试获取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 包含Netdata master的ipv4 adres . 我只是想不出办法做到这一点 .

1 回答

  • 1

    你可以使用盐矿 .

    首先将mine_function添加到netdata-master服务器 . 这可以在柱子或minion配置文件中配置 .

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

    上面的mine_function使其他minion能够为你的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') %}

相关问题