Ho creato un playbook Ansible che crea un'istanza cloud e quindi installa alcuni programmi sull'istanza. Voglio eseguire questo libro di gioco più volte (senza usare uno script di bash). È possibile utilizzare un ciclo per eseguire il loop su questi due task insieme (I.E un ciclo per due attività?). Tutto quello che sono stato in grado di trovare finora è un ciclo per ogni singola attivitàUn ciclo su più attività Ansible
risposta
No, al momento non è possibile. with_items
utilizzato per lavorare con l'istruzione include
nelle versioni precedenti di Ansible, ma purtroppo è stato eliminato.
Anche se sarà portato indietro nel Ansible 2.0, vedere scorrere 14/15 di What's New in v2 - AnsibleFest London 2015
Si potrebbe provare a lavorare con il v2 branch from github, la funzione dovrebbe essere disponibile in là.
Quello che si può fare con 1.9.1 è spostare le attività in un ruolo e fare riferimento a questo ruolo più volte nel proprio playbook.
Un aggiornamento:
In 2.0 è in grado di utilizzare
with_
loop e attività include (ma non playbook include), questo aggiunge la possibilità di un loop all'interno di serie di compiti in un solo colpo. Ci sono un paio di cose che devi tenere a mente, un'attività inclusa che ha il proprio ciclowith_
sovrascrive il valore della variabile oggetto speciale. Quindi, se volete accesso sia l'inclusione della voce e la voce della attività corrente si dovrebbe usareset_fact
per creare un alias per quello esterno .:- include: test.yml with_items: - 1 - 2 - 3
in test.yml:
- set_fact: outer_loop="{{item}}" - debug: msg="outer item={{outer_loop}} inner item={{item}}" with_items: - a - b - c
Fonte: Ansible Docs
Questo è stato migliorato in 2.1, con una funzione per specificare un nome di variabile diverso per il ciclo esterno - si veda [sezione controllo loop] (http://docs.ansible.com/ansible/playbooks_loops.html#loop-control) di Documenti ansiosi. Ci sono miglioramenti correlati in 2.2 nella stessa sezione. – RichVel
È un peccato che non si possa usare 'with_items' con [blocchi] (http://docs.ansible.com/ansible/latest/playbooks_blocks.html), che sembra come se fosse un modo idiomatico per fare questo. –