Michael DeHaan (creador de Ansible) hizo una publicación en CoderWall que habla sobre un problema muy similar. Puede ajustarlo y expandirlo de acuerdo con sus necesidades (como permisos y propiedad). La parte relevante de la publicación está aquí:
Esto se puede simplificar usando " with_items" y una sola notifydeclaración. Si alguna de las tareas cambia, se notificará al servicio exactamente de la misma manera que debe reiniciarse al final de la ejecución del libro de jugadas.
- 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
Tenga en cuenta que, dado que tenemos tareas que requieren más de un argumento único, no solo decimos " item" en la template:línea ' ', sino que lo usamos with_itemscon una variable hash (diccionario). También puede mantenerlo un poco más corto usando listas, si lo desea. Esta es una preferencia estilística:
- 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
Por supuesto, también podríamos definir la lista sobre la que estaba caminando en otro archivo, como un " groupvars/webservers" archivo para definir todas las variables necesarias para el webserversgrupo, o un archivo YAML cargado desde la varsfilesdirectiva " " dentro del libro de jugadas. Mira cómo esto puede limpiarse si lo hacemos.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglobsiempre opera desdefiles/, puede acceder a plantillas con../templates/mytemplate/*. stackoverflow.com/a/27407566/1695680