2017-02-27 1 views
0

적용 할 수있는 문장과 함께 루프를 결합하고 싶습니다. 그러나 각 루프 반복에 When 문이 적용되므로 전체 루프에 하나를 적용 할 가능성이 없어집니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?가능 : 루프를 완료 할 때 적용

이전에이 문제가 발생했지만이 경우에는 존재하지 않을 수도있는 변수에 관한 것입니다. 무엇을하고 싶은지는 다음과 같습니다.

default-filter는 y가 정의되지 않은 인스턴스를 처리합니다. 내 경우에는 x가 정의되지 않았을 수 있기 때문에,이 루프를 실행할 필요가있다. 분명히 이것은 실제적인 책임 성명이 아닙니다. 대신 내가 무엇을 사용해야합니까? HOST_VARS 예를 들면와

- name: kludge1 
    set_fact: 
    fake_y : "{{ [] }}" 

- name: kludge2 
    set_fact: 
    fake_y : "{{ x.y|default([]) }}" 
    when: x is defined 

- name: Loop 
    debug: 
    msg: "{{ item }}" 
    with_items: '{{ fake_y }}' 

:

현재, 내가 좋아하는 뭔가 끔찍한 사용

x: 
    y: 
    - "foo" 
    - "bar" 

을하지만 난 그 길을 가야하는 것 아니에요 확신합니다.

답변

1

비슷한 대답이 here입니다.

- name: Loop 
    debug: 
    msg: "{{ item }}" 
    with_items: (x | default({})).y | default([]) 

을 그리고 전체 루프 작업에 바운드 when 문 방법은 (적어도 현재 Ansible 2.2)이 없다 : 당신은 행에 여러 기본값을 사용할 수 있습니다.

관련 문제