Michael DeHaan (creatore di Ansible) ha pubblicato un post su CoderWall che parla di un problema molto simile. Puoi modificarlo ed espanderlo in base alle tue esigenze (come permessi e proprietà). Parte pertinente del post è qui:
Questo può essere semplificato usando " with_items" e una singola notifyistruzione. Se una qualsiasi delle attività cambia, il servizio verrà notificato esattamente nello stesso modo in cui deve essere riavviato al termine dell'esecuzione del 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
Si noti che dal momento che abbiamo attività che accettano più di un argomento unico, non solo diciamo " item" nella template:riga " ", ma usiamo with_itemscon una variabile hash (dizionario). Puoi anche mantenerlo un po 'più breve usando gli elenchi, se lo desideri. Questa è una preferenza stilistica:
- 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
Ovviamente potremmo anche definire l'elenco su cui stavi camminando in un altro file, come un " groupvars/webservers" file per definire tutte le variabili necessarie per il webserversgruppo o un file YAML caricato dalla varsfilesdirettiva " " all'interno del playbook. Guarda come questo può ripulire se lo facciamo.
- name: template everything for fooserv
template: src={{item.src}} dest={{item.dest}}
with_items: {{fooserv_template_files}}
notify:
- restart fooserv
with_fileglobfunziona sempre dafiles/, è possibile arrivare ai modelli con../templates/mytemplate/*. stackoverflow.com/a/27407566/1695680