Michael DeHaan (pencipta Ansible) membuat posting di CoderWall yang berbicara tentang masalah yang sangat mirip. Anda dapat menyesuaikan dan memperluasnya sesuai dengan kebutuhan Anda (seperti izin dan kepemilikan). Bagian yang relevan dari pos ada di sini:
Ini dapat disederhanakan dengan menggunakan " with_items
" dan satu notify
pernyataan. Jika ada tugas yang berubah, layanan akan diberitahukan dengan cara yang persis sama dengan yang harus dinyalakan kembali di akhir proses playbook.
- 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
Perhatikan bahwa karena kita memiliki tugas yang mengambil lebih dari satu argumen unik, kita tidak hanya mengatakan " item
" di baris ' template:
', tetapi juga menggunakan with_items
variabel hash (kamus). Anda juga dapat menyimpannya sedikit lebih pendek dengan menggunakan daftar, jika diinginkan. Ini adalah preferensi gaya:
- 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
Tentu saja kami juga bisa mendefinisikan daftar Anda berjalan di file lain, seperti file " groupvars/webservers
" untuk mendefinisikan semua variabel yang diperlukan untuk webservers
grup, atau file YAML yang dimuat dari varsfiles
arahan " " di dalam buku pedoman. Lihat bagaimana ini dapat membersihkan jika kita melakukannya.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglob
selalu beroperasi darifiles/
, Anda dapat membuka templat dengan../templates/mytemplate/*
. stackoverflow.com/a/27407566/1695680