User Tools

Site Tools


wikiv1:ansible_role

Gerenciando Roles

Roles

Roles são pacotes de configuração que podem ser usados para definir a configuração de um servidor. Cada role contém uma ou mais playbooks, que podem ser usados para configurar um servidor de acordo com as necessidades.

Através de Roles definimos o que precisa ser configurado em cada grupo de servidores, permitindo assim criar um código modular, que depois pode ser compartilhado e reutilizado.

Um exemplo prático é criar uma Role chamada database, responsável em instalar e configurar servidores MySQL e PostgreSQL.

Roles são boas práticas para organização de múltiplas tarefas, relacionando e encapsulando os dados necessários para realizar essas tarefas. Por exemplo, a instalação de um servidor de banco de dados, que envolve a adição de um repositório, a instalação de pacotes e a configuração de arquivos.

Uma implementação muitas vezes requer dados adicionais como variáveis, arquivos, modelos dinâmicos e muito mais. As Roles fazem o papel de PlayBooks organizando tarefas e dados relacionados em uma estrutura mais coerente.

Estrutura de uma Role

A estrutura de uma Role separa cada item de uma implementação feita através do Ansible.

Acompanhe a descrição de cada diretório:

  • defaults: Armazena o arquivo main.yml contendo as variáveis que terão a prioridade mais baixa de todas as variáveis disponíveis, e pode ser facilmente substituído por qualquer outra variável, incluindo variáveis de inventário;
  • files: Armazena arquivos de configuração de cada serviço. Exemplo: haproxy.cf;
  • handlers: Armazena o arquivo main.yml contendo as Handlers de cada serviço, como por exemplo, reler ou reiniciar o HaProxy após seu arquivo de configuração ser modificado;
  • meta: Armazena o arquivo main.yml contendo as dependências que uma Role possui;
  • tasks: Armazena o arquivo main.yml contendo as tarefas de instalação e configuração de cada serviço;
  • templates: Armazena arquivos de templates que utilizam variáveis de fatos ou personalizadas. A extensão deve terminar em .j2 com base no template Jinja2 do Python. Exemplo: haproxy.cf.j2;
  • tests: O diretório tests possui um arquivo de inventário de amostra, que aponta para localhost, e um playbook test.yml, que está configurado para chamar a Role que você acabou de criar;
  • vars: Armazena o arquivo main.yml contendo as variáveis que serão utilizadas pelo arquivo main.yml da pasta tasks.

Ansible Galaxy

O Ansible Galaxy é um repositório de pacotes de software para Ansible, que permite baixar e usar pacotes de software de automação de infraestrutura construídos por outros usuários da comunidade Ansible. Os pacotes de software estão disponíveis para todos os sistemas operacionais suportados por Ansible.

Para usar o Galaxy você precisa ter uma conta através de um registro gratuito na página do Galaxy.

Ansible Galaxy

Comando ansible-galaxy

O comando ansible-galaxy permite criar roles (ou pacotes de roles). Você também tem a opção de publicar suas Roles no site https://galaxy.ansible.com/ através de uma conta gratuita.

Para criar uma nova Role, use o comando ansible-galaxy role init. Exemplo:

$ ansible-galaxy role init apache
wikiv1/ansible_role.txt · Last modified: by 127.0.0.1