Michael DeHaan ( Ansible'ın yaratıcısı), CoderWall'da çok benzer bir konuda konuşan bir yazı yaptı . Gereksinimlerinize göre (izinler ve mülkiyet gibi) ayarlayabilir ve genişletebilirsiniz. Gönderinin ilgili kısmı burada:
Bu, " with_items
" ve tek bir notify
ifade kullanarak basitleştirilebilir . Görevlerden herhangi biri değişirse, hizmete, oyun kitabı çalıştırmasının sonunda yeniden başlatılması gerektiği şekilde bildirilir.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items:
- { src: 'templates/foo.j2', dest: '/etc/splat/foo.conf' }
- { src: 'templates/bar.j2', dest: '/etc/splat/bar.conf' }
notify:
- restart fooserv
Birden fazla benzersiz argüman alan görevlere sahip olduğumuz için item
, ' template:
' satırında sadece " " değil with_items
, bir karma (sözlük) değişkeni ile kullandığımızı unutmayın. İsterseniz listeleri kullanarak da biraz daha kısa tutabilirsiniz. Bu bir stilistik tercihtir:
- name: template everything for fooserv
template: src={{item.0}} dest={{item.1}}
with_items:
- [ 'templates/foo.j2', '/etc/splat/foo.conf' ]
- [ 'templates/bar.j2', '/etc/splat/bar.conf' ]
notify:
- restart fooserv
Elbette, üzerinde yürüdüğünüz listeyi groupvars/webservers
, webservers
grup için gereken tüm değişkenleri tanımlayan bir " " dosyası veya varsfiles
oyun kitabının içindeki " " direktifinden yüklenen bir YAML dosyası gibi tanımlayabiliriz . Bakarsak bunun nasıl temizlenebileceğine bir bak.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglob
her zaman çalışırfiles/
, şablonlara ulaşabilirsiniz../templates/mytemplate/*
. stackoverflow.com/a/27407566/1695680