Michael DeHaan (twórca Ansible) napisał post na CoderWall, który mówi o bardzo podobnym problemie. Możesz go dostosować i rozszerzyć zgodnie z własnymi potrzebami (takimi jak uprawnienia i własność). Odpowiednia część postu znajduje się tutaj:
Można to uprościć, używając „ with_items” i pojedynczej notifyinstrukcji. Jeśli którekolwiek z zadań ulegnie zmianie, usługa zostanie o tym powiadomiona dokładnie tak samo, jak musi zostać uruchomiona ponownie na końcu uruchomienia playbooka.
- 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
Zauważ, że ponieważ mamy zadania, które wymagają więcej niż jednego unikalnego argumentu, nie mówimy tylko „ item” w template:wierszu „ ”, ale używamy with_itemsze zmienną hash (słownik). Jeśli chcesz, możesz też nieco go skrócić, używając list. To jest preferencja stylistyczna:
- 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
Oczywiście możemy również zdefiniować listę, w której chodziłeś w innym pliku, np. Plik „ groupvars/webservers” do zdefiniowania wszystkich zmiennych potrzebnych dla webserversgrupy, lub plik YAML załadowany z varsfilesdyrektywy „ ” wewnątrz podręcznika. Zobacz, jak możemy to wyczyścić, jeśli to zrobimy.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglobzawsze działa odfiles/, możesz dostać się do szablonów za pomocą../templates/mytemplate/*. stackoverflow.com/a/27407566/1695680