根据接口粒度从所有奴才获取IP地址

时间:2018-10-23 23:48:52

标签: devops salt-stack

Salt的新手,请耐心等待,我具有以下mine_functions:

mine_functions:
  network.interfaces: []
  network.ipaddrs: []

现在我有一些具有不同网络接口名称的节点,所以我设置了一个粒度来定义哪些接口将成为后端接口:

salt '*' grains.item interface_backend

node2:
    ----------
    interface_backend:
        eth1
node1:
    ----------
    interface_backend:
        enp0s8

由于我使用的是官方公式,因此我想在支柱中进行任何自定义,因此我包括以下内容:

{%- set backend_addrs = salt.saltutil.runner('mine.get',
  tgt='*',
  fun='network.ipaddrs',
  tgt_type='glob') %}

...

  entries:
    {%- for node, addrs in backend_addrs.iteritems() %}
      {%- for addr in addrs %}
        - {{ addr }}/32
      {%- endfor %}
    {%- endfor %}

显然,这将为我获取所有接口的所有地址。现在,如何指定返回仅附加在 interface_backend 接口上的 地址?在我的示例中,我仅看到相当静态的配置,例如:

network.interfaces: [eth1]

我可以想象,如今通过一致的网络设备命名,更多的人可能会发现这种局限性,或者以上是解决问题的错误方法?不幸的是,CIDR过滤器将无法正常工作,因为子网将不可预测。

0 个答案:

没有答案