This is an old revision of the document!
Table of Contents
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.ymlcontendo 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.ymlcontendo 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.ymlcontendo as dependências que uma Role possui; - tasks: Armazena o arquivo
main.ymlcontendo 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
.j2com 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.ymlda 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.
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

