使用 mine.get 从 state.sls 中的有序字典获取值

Get value using mine.get from a ordered dictionary in state.sls

我在 pillar 中定义了一个地雷来获取 salt minion 的 ip。当我在盐状态下使用矿山时,我得到了一本字典。有没有办法过滤掉并从中获取第一项。

这是我在支柱中定义的我的:

    ip_add:
      - mine_function: grains.get
      - ipv4

这是我的状态文件:

{% set id = 'aws-vm1' %}
{% set addrs =  salt['mine.get'](id, 'ip_add') %}

{% for key in salt['mine.get'](id, 'ip_add')  %}
Test:
  file.append:
    - name: C:\test
    - text: {{addrs}}

我得到的输出是: OrderedDict([('aws-vm1', ['10.93.143.235', '127.0.0.1'])])

我想获取第一个ip,以便我可以在minions之间共享它

我找到了解决方法。我从我的

中获取了 IP 列表
aws-vm1:
    ----------
    aws-vm1:
        - 10.93.143.235
        - 127.0.0.1

并通过 {{ip[0]}} 获取第一个值,这是我想要的私有 IP。

{% set id = 'aws-vm1' %}
 
# Returns a dict OrderedDict
{% set ip_list  =  salt['mine.get'](id, 'ip_add') %} 


{% set ip=  ip_list.values() | first %}

Test:
  file.append:
    - name: C:\test
    - text: {{ip[0]}}