Ansible: Explicando estrutura de pastas

DeltaOps
3 min readJul 30, 2024

--

No post anterior, criamos um primeiro playbook, onde basicamente colocamos as instruções em um arquivo e aplicamos esse playbook. Você ressalta que essa não é a melhor prática, especialmente quando se trata de tarefas mais complexas, como a instalação completa de algum software.

Nesse caso, manter o controle e a manutenção do código pode se tornar bastante complicado. Por isso, a estrutura de pastas e arquivos que eu expliquei anteriormente é recomendada pela comunidade Ansible.

Cada pasta e arquivo nessa estrutura tem uma responsabilidade específica, o que ajuda a organizar e manter o código de forma mais eficiente. Vamos revisar novamente a função de cada elemento:

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

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.

Sabe como gerar essa estrutura automaticamente? Vou te mostrar abaixo.
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:

Escrito por 🖋️ Diogo Lima
Sócio Fundador da Empresa DeltaOps

--

--

DeltaOps

Somos uma consultoria especializada em Cloud, DevOps e SRE. Apaixonados por automação, ajudamos empresas em sua jornada para a nuvem com práticas DevOps.