2017-10-12 10 views
0

In Ansibleでは、オブジェクトの属性に値が含まれているかどうかでオブジェクトをフィルタリングするにはどうすればよいですか?例:私は、属性名= "a2"を持つprivate_manオブジェクトを返します。private_manオブジェクトをフィルタリングし、addrには "1.2.3.4"が含まれています。属性によるフィルタには値が含まれています

ここAnsibleコードだ:

- hosts: localhost 
    connection: local 
    gather_facts: no 
    vars: 
    network: 
     addresses: 
     private_ext: 
      - name: a1 
      addr: 
       - 1.2.3.4 
     private_man: 
      - name: a2 
      addr: 
       - 10.10.20.30 
       - 1.2.3.4 
      - name: a3 
      addr: 
       - 10.90.80.10 

私は次のことを試してみました:

- debug: 
    msg: "{{ item.name }}" 
    with_items: "{{ network.addresses.private_man | selectattr('addr', 'in', '1.2.3.4'}} | list" 

A2オブジェクトのaddrの要素が1.2.3.4

が含まれているので、私は、これは "A2" を表示することが期待しかし、これを実行すると、selectaddr( 'addr'、 'in'、 '1.2.3.4')が無効なため、おそらく完全に失敗しました。

答えて

0

これは機能しますか?

- debug: 
     msg: "{{ item.name }}" 
    with_items: "{{network.addresses.private_man}}" 
    when: '"1.2.3.4" in item.addr' 
関連する問題