2017-10-12 8 views
0

신뢰할 수있는 방법으로, 객체의 속성에 값이 포함되어 있는지 여부에 따라 객체를 필터링하는 방법은 무엇입니까? 예를 들어, private_man 객체를 필터링하여 속성 이름 = "a2"인 private_man 객체를 반환하려고합니다. 여기서 addr은 "1.2.3.4"를 포함합니다.속성 별 가능 필터에는 값이 포함되어 있습니다.

다음은 Ansible 코드입니다 :

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

내가 A2 객체의 요지 요소가 1.2.3.4

포함되어 있기 때문에이 "A2"를 표시 할 것으로 예상 :

- 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 

내가 시도 다음 그러나 이것을 실행했을 때 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'