Como executar vários playbooks em ordem com o Ansible?

16

Estou trabalhando em vários manuais do Ansible para criar uma nova instância do servidor. Existem aproximadamente 15 manuais diferentes que preciso executar em uma ordem específica para ativar com êxito um servidor.

Meu pensamento inicial foi escrever um script de shell que execute ansible-playbook playbook_name.ymle duplique uma entrada para cada manual que eu preciso executar.

Existe uma maneira mais inteligente / melhor de fazer isso usando um manual mestre e, em caso afirmativo, como seria (exemplos são apreciados).

Eu poderia escrever um manual monolítico que faz tudo, mas há algumas que são executadas como root primeiro e depois como usuário do sudo posteriormente.

nulltek
fonte
2
use include em seu playbook principal docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r
11
Para lidar com o caso de execução como root e como usuário sudo, você pode usar o recurso de bloco - coloque a become:peça no final de cada bloco. Pode ser necessário criar uma nova reprodução para alternar o usuário da conexão do usuário root para o usuário sudo.
RichVel

Respostas:

15

Crie muitos sub-playbooks e agregue-os por meio de instruções de inclusão.

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

Se seus playbooks precisarem ser executados em ordem e se todos forem obrigatórios, crie um playbook principal e inclua arquivos com tarefas. Um manual deve sempre ser um processo fechado.

flxPeters
fonte
2
você poderia elaborar a última parte da sua resposta? o que você quer dizer com "Um manual deve ser sempre um processo fechado". ?
Mike Vella
11
Existe uma maneira de especificar todos os playbooks usando expressão regular? Por exemplo:- include : books/*.yml
blueskin
8
Looks como includeestá obsoleta. docs.ansible.com/ansible/latest/playbooks_reuse.html Acho que import_playbook: fooé o caminho certo a seguir, mas não tenho muita experiência.
Andrew
11

Para versões mais recentes do Ansilbe, você pode criar muitos sub-playbooks e agregá-los através das instruções import_playbook:

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