2015-06-16 14 views
5

Mam następujący dict strukturę zmienną w ansibl Playbook:Jak przejść przez zagnieżdżoną strukturę dyktowania za pomocą Ansible?

apache_vhosts: 
- name: foo 
    server_name: foo.com 
    server_aliases: 
    - a.foo.com 
    - b.foo.com 
    - c.foo.com 
- name: bar 
    server_name: bar.com 
    server_aliases: 
    - d.bar.com 
    - e.bar.com 
    - f.bar.com 

muszę utworzyć dowiązania symbolicznego dla każdej z domen server_name i server_aliases, np

/tmp/foo.com  -> /var/www/foo 
/tmp/a.foo.com -> /var/www/foo 
/tmp/b.foo.com -> /var/www/foo 
/tmp/c.foo.com -> /var/www/foo 
/tmp/bar.com  -> /var/www/bar 
/tmp/d.bar.com -> /var/www/bar 
/tmp/e.bar.com -> /var/www/bar 
/tmp/f.bar.com -> /var/www/bar 

Mam następujące zadania Który działa dla server_name:Ale nie jestem pewien, jak mogę zrobić to samo dla tablicy server_aliases.

Cieszę się, że w razie potrzeby skorzystam z dwóch oddzielnych zadań, ale nie chcę dodawać oddzielnej zmiennej domains, która powiela listę domen w płaskiej strukturze.

Ten Google Groups post jest blisko, ale nie mogę się dowiedzieć, jak sprawić, aby działał on na wielu wirtualnych hostach.

Czy to możliwe? Czy to jest zasadniczo złe podejście?

Odpowiedz

12

Możesz użyć with_subelements do zapętlenia się przez server_aliases. Poniższy fragment kodu:

- name: Add a domain symlinks /tmp for server_name. 
    debug: msg="{{ item.server_name }}" 
    with_items: apache_vhosts 
    - name: Add a domain symlinks /tmp for server_aliases. 
    debug: msg="name - {{ item.0.name }} and serverAlias - {{ item.1 }}" 
    with_subelements: 
    - apache_vhosts 
    - server_aliases 
+0

To zadziałało. Dzięki za pomoc. – tommarshall

Powiązane problemy