Ansible: Estrutura de pastas de uma role – guia completo

No [post anterior], criamos um primeiro playbook colocando todas as instruções em um único arquivo. Mas essa não é a melhor prática, especialmente quando se trata de tarefas mais complexas, como a instalação completa de um software.

Para manter o controle e a facilidade de manutenção do código, a comunidade Ansible recomenda uma estrutura de pastas padronizada para organizar suas roles. Neste guia, você vai aprender a estrutura de pastas de uma role Ansible, a função de cada diretório e como gerar tudo automaticamente.

Estrutura de pastas de uma role Ansible

nome_da_sua_role/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml

💡 **Dica:** Essa estrutura pode ser gerada automaticamente com o comando `ansible-galaxy init`, conforme veremos no final do artigo.

O que cada pasta e arquivo faz?

defaults: Contém as variáveis com valores padrão para a role. Essas variáveis têm a menor prioridade e podem ser sobrescritas.

files: Armazena arquivos estáticos que são copiados para os hosts durante a execução da role.

handlers: Contém manipuladores (handlers) que podem ser acionados por tarefas durante a execução da role.
meta: Possui metadados sobre a role, como dependências, autor, licença, etc.
README.md: Arquivo de documentação da role, com informações sobre seu propósito, variáveis, uso, etc.

tasks: Contém as tarefas que serão executadas pela role.
templates: Armazena arquivos de template Jinja2 que podem ser renderizados durante a execução da role.
tests: Contém arquivos de inventário e testes (playbooks) para validar a role.

vars: Contém variáveis específicas da role, com prioridade maior que as variáveis padrão.

Essa estrutura padronizada facilita a organização, manutenção e reutilização das roles em diferentes projetos Ansible. Ao seguir essa convenção, outros membros da equipe ou a comunidade Ansible poderão facilmente entender e trabalhar com sua role.

Como gerar a estrutura automaticamente

Logue no terminal, crie uma pasta chamada ansible.

mkdir ansible

Depois execute.

ansible-galaxy init nome_da_sua_role 

Veja o resultado.

tree nome_da_sua_role/

O comando ansible-galaxy init é utilizado para gerar automaticamente a estrutura de pastas e arquivos recomendada pela comunidade Ansible para uma nova role.

Quando você executa esse comando no terminal, o Ansible cria uma nova pasta com o nome da role que você especificar. Dentro dessa pasta, ele popula todas as pastas e arquivos padrão que devem compor uma role Ansible, como:

  • defaults/
  • files/
  • handlers/
  • meta/
  • tasks/
  • templates/
  • vars/
  • README.md

Isso torna o desenvolvimento de roles do Ansible muito mais ágil e padronizado.

Espero que tenha conseguido contribuir um pouco com o desenvolvimento de vocês. Irei escrever mais artigos sobre Ansible, então não esqueçam de me seguir nas redes sociais. E caso tenham dúvidas, não deixem de entrar em contato. Beleza, até mais pessoal, fui.

https://deltaops.com.br

https://www.linkedin.com/company/deltaopscloud

✨ Referência: