Michael DeHaan (Schöpfer von Ansible) hat einen Beitrag auf CoderWall verfasst , in dem es um ein sehr ähnliches Thema geht. Sie können es an Ihre Anforderungen anpassen und erweitern (z. B. Berechtigungen und Eigentumsrechte). Ein relevanter Teil des Beitrags ist hier:
Dies kann durch die Verwendung von " with_items" und einer einzelnen notifyAnweisung vereinfacht werden . Wenn sich eine der Aufgaben ändert, wird der Dienst genau so benachrichtigt, wie er am Ende der Playbook-Ausführung neu gestartet werden muss.
- 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
Beachten Sie, dass wir, da wir Aufgaben haben, die mehr als ein eindeutiges Argument enthalten, nicht nur " item" in der template:Zeile ' ' angeben , sondern with_itemsmit einer Hash-Variablen (Wörterbuch) verwenden. Sie können es auch etwas kürzer halten, indem Sie Listen verwenden, wenn Sie möchten. Dies ist eine stilistische Präferenz:
- 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
Natürlich können wir auch die Liste, über die Sie gegangen sind, in einer " groupvars/webservers" anderen Datei definieren, z. B. eine Datei, in der alle für die webserversGruppe benötigten Variablen definiert werden , oder eine YAML - Datei, die aus der varsfilesDirektive " " im Playbook geladen wird . Schauen Sie, wie das aufräumen kann, wenn wir es tun.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglobfunktioniert immer abfiles/, mit können Sie zu Vorlagen gelangen../templates/mytemplate/*. stackoverflow.com/a/27407566/1695680