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 notify
Anweisung 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_items
mit 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 webservers
Gruppe benötigten Variablen definiert werden , oder eine YAML - Datei, die aus der varsfiles
Direktive " " 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_fileglob
funktioniert immer abfiles/
, mit können Sie zu Vorlagen gelangen../templates/mytemplate/*
. stackoverflow.com/a/27407566/1695680