2016-09-06 2 views
0

나는 다음과 같은 문제가있다 :
된 : host_var 내의 nginx 사이트 (발췌) 정의 :이 예에서는Ansible, with_subelements 및 skip_missing이 작동하지 않습니다

nginx_sites: 
- server: 
    name: site1 
    location1: 
     config: 
     name: "/" 
     [...] 
- server: 
    name: site2 
    location1: 
     config: 
     name: "/" 
     [...] 
    location2: 
     config: 
     name: "/secretspace" 
     [...] 
     htaccess: 
     username: 
      password: somepassword 

을 나는이 개 사이트가있다. 두 번째에는 두 개의 위치가 있으며 두 번째 위치에는 "htaccess"라는 하위 요소가 있습니다. 이것은 대응하는 htaccess 파일을 생성하기 위해 사용하고자하는 것입니다.

나는이 ansible 작업을 시도 :

- name: Creating htaccess files if nessecary 
    debug: msg="Huhu {{ item.0.name }} {{ item.1 }}" 
    with_subelements: 
    - "{{ nginx_sites }}" 
    - "htaccess" 
    - flags: 
    skip_missing: True 

해야 이럴 nginx_sites에서 "htaccess로"요소라는 이름의 하위 요소가있을 때, 디버그 문을 인쇄하거나없는 경우 건너 뜁니다. 그러나 아무 일도 일어나지 :

TASK [nginx : Creating htaccess files if nessecary] **************************** 
task path: /home/dakky/devzone/ansible-cfg-mgmt/roles/nginx/tasks/main.yml:65 

PLAY RECAP ********************************************************************* 
hostname  : ok=1 changed=0 unreachable=0 failed=0 

어떤 생각 내가 잘못 여기서 뭐하는거야?

답변

1

with_subelements리스트 하위 요소를 반복하는 데 사용됩니다.
대신 명명 된 속성 (LOCATION1, LOCATION2 등)의 위치 목록 확인하기 위해 입력 데이터를 수정하는 경우 : 그럼 당신은 당신의 위치를 ​​반복 할 수

nginx_sites: 
    - server: 
     name: site1 
     locations: 
     - config: 
      name: "/" 
    - server: 
     name: site2 
     locations: 
     - config: 
      name: "/" 
     - config: 
      name: "/secretspace" 
      htaccess: 
      username: 
       password: somepassword 

및 정의 htaccess에있는 사람을 선택합니다

- name: Creating htaccess files if nessecary 
    debug: msg="Huhu {{ item.0.server.name }} {{ item.1.htaccess }}" 
    when: item.1.htaccess is defined 
    with_subelements: 
    - "{{ nginx_sites }}" 
    - "server.locations" 

하위 요소에는 "전체 경로"를 지정해야합니다. 원래 예제에서 htaccess은 절대 일치하지 않지만 server.location2.htaccess은 표시됩니다 (이 항목이 목록이 아니라는 오류가 발생했지만).