2015-06-16 11 views
5

Bir yanıtlayıcı 'oyun kitabında aşağıdaki dict yapı değişkeni vardır:İç içe geçmiş bir Dict yapısı Ansible ile nasıl taşınır?

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 

Ben server_name ve server_aliases alanların her biri için bir sembolik oluşturmak gerekir, örneğin:

/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 

Aşağıdaki görev var

- name: Add a domain symlinks /tmp for server_name. 
    file: 
    src: "/var/www/{{ item.name }}" 
    dest: "/tmp/{{ item.server_name }}" 
    state: link 
    with_items: apache_vhosts 

Ama nasıl yapabilirim emin değilim: hangi server_name için çalışıyor server_aliases dizisi için de aynı.

Gerekirse iki ayrı görevi kullanmaktan mutluluk duyarım, ancak düz bir yapıdaki etki alanlarının listesini çoğaltan ayrı bir domains değişkeni eklemekten kaçınmaya hevesliyim.

Bu Google Groups post, ancak çok sayıda sanal konak için nasıl çalışacağını bilemiyorum.

Bu mümkün mü? Yoksa bu temelde yanlış bir yaklaşım mıdır?

cevap

12

server_aliases ile döngü yapmak için with_subelements öğesini kullanabilirsiniz. Aşağıdaki snippet

+0

Çalıştı. Yardımınız için teşekkürler. – tommarshall