¿Cómo ejecutar múltiples playbooks en orden con Ansible?

16

Estoy trabajando en varios playbooks de Ansible para activar una nueva instancia de servidor. Hay aproximadamente 15 libros de jugadas diferentes que necesito ejecutar en un orden específico para activar un servidor con éxito.

Mi pensamiento inicial fue escribir un script de shell que se ejecute ansible-playbook playbook_name.ymly duplicar una entrada para cada libro de jugadas que necesito ejecutar.

¿Existe una forma más inteligente / mejor de hacer esto usando un libro de jugadas maestro y, de ser así, cómo se vería (se agradecen los ejemplos)?

Podría escribir un libro de jugadas monolítico que lo haga todo, pero hay algunas jugadas que se ejecutan como root primero y luego como usuario de sudo más tarde.

nulltek
fuente
2
use include en su libro de jugadas principal docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r
1
Para manejar el caso de ejecutarse como root y luego como usuario de sudo, puede usar la función de bloque : coloque la become:parte al final de cada bloque. Sin embargo, es posible que deba crear una nueva jugada para cambiar el usuario de conexión de usuario root a sudo.
RichVel

Respuestas:

15

Cree muchos sub-playbooks y agrúpelos mediante declaraciones de inclusión.

- include: playbook-one.yml
- include: playbook-two.yml

Si sus libros de jugadas deben ejecutarse en orden y si todos son obligatorios, cree un libro de jugadas principal e incluya archivos con tareas. Un libro de jugadas siempre debe ser un proceso cerrado.

flxPeters
fuente
2
¿Podría dar más detalles sobre la última parte de su respuesta? ¿Qué quiere decir con "un libro de jugadas siempre debe ser un proceso cerrado". ?
Mike Vella
1
¿Hay alguna manera de especificar todos los libros de jugadas usando expresiones regulares? Por ejemplo:- include : books/*.yml
blueskin
8
Parece que includeestá en desuso. docs.ansible.com/ansible/latest/playbooks_reuse.html Creo que import_playbook: fooes el camino correcto, pero no tengo mucha experiencia.
Andrew
11

Para las versiones más nuevas de Ansilbe, puede crear muchos sub-playbooks y agregarlos a través de las declaraciones import_playbook:

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
Peter Senna
fuente