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://www.linkedin.com/company/deltaopscloud
✨ Referência: