O que é um Ansible Role e como ele é utilizado?

Copiar URL

Um Ansible® Role é uma unidade de automação autossuficiente e portátil do Ansible, considerada o método preferencial para agrupar tarefas e variáveis, arquivos, handlers (manipuladores) e outros ativos associados a elas em uma estrutura de arquivos conhecida. Tarefas de automação podem ser escritas utilizando exclusivamente um playbook do Ansible. Já com os Ansible Roles você cria pacotes de conteúdo de automação que podem ser executados em um ou mais plays, reutilizados em outros playbooks e compartilhados com outros usuários em coleções.

Os Ansible Roles são expressos em YAML, uma linguagem de serialização de dados legível por humanos utilizada para gravar arquivos de configuração. Quando um role é incluído em uma tarefa ou play, o Ansible procura um arquivo main.yml em pelo menos 1 dos 8 diretórios de role padrão. Esses diretórios, explicados abaixo, incluem tarefas de role, handlers, módulos, padrões, variáveis, arquivos, templates e meta.

roles/ common/# this hierarchy represents a "role" tasks/ # main.yml # -- O arquivo de tarefas pode incluir arquivos menores se necessário handlers/ # main.yml # -- arquivo de templates de handlers/ # -- arquivos para uso com o recurso de template ntp.conf.j2 # ------- os templates terminam em .j2 files/ # bar.txt # -- arquivos para uso com o recurso de cópia foo.sh # -- arquivos de script para uso com as variáveis do recurso de script/ # main.yml # -- variáveis associadas ao padrão deste role/ # main.yml # -- variáveis padrão com prioridade mais baixa para este role meta/ # main.yml # -- biblioteca de dependências do role/ # roles can also include custom modules module_utils/ # roles can also include custom module_utils lookup_plugins/ # or other types of plugins, like lookup in this case webtier/ # same kind of structure as "common" was above, done for the webtier role monitoring/ # "" fooapp/ # "" 

Para usar um Ansible Role, basta chamá-lo em um playbook. Você pode listá-lo com a opção roles ou adicioná-lo à seção de tarefas de role com os comandos include_role ou import_role. Os roles listados por meio da opção roles ou adicionados via import_role são executados antes das outras tarefas em um play. Ao listá-los utilizando include_role, os roles são executados na ordem definida na lista de tarefas.

Tanto os Ansible Roles quanto os Ansible Playbooks são ferramentas para organizar e executar tarefas de automação, mas cada uma tem uma finalidade diferente. A escolha de criar Ansible Roles ou escrever todas as tarefas em um Ansible Playbook depende do caso de uso específico e da sua experiência com o Ansible.

A maioria dos desenvolvedores de automação e administradores de sistemas começam criando conteúdo de automação com playbooks individuais. O playbook é uma lista de tarefas de automação executadas para um inventário definido. As tarefas podem ser organizadas em um play, que consiste de uma ou mais tarefas mapeadas para um host específico e executadas em ordem. Um playbook pode conter um ou mais plays, oferecendo um mecanismo flexível para executar a automação Ansible em um único arquivo.

Embora os playbooks sejam um método poderoso para a automação com o Ansible, escrever todas as tarefas em um playbook nem sempre é a melhor abordagem. Criar a maior parte do conteúdo de automação em Ansible Roles e chamá-los em um playbook pode ser a escolha mais apropriada quando as variáveis são complexas e você pretende reutilizar os roles e o escopo.

O exemplo a seguir ilustra o uso de um role, linux-systemr-roles.timesync, dentro de um playbook. Neste caso, seriam necessárias mais de quatro tarefas para alcançar o que um único role realiza. 

- name: Gerenciar sincronização de horário em três servidores hosts: targets vars: timesync_ntp_servers: - hostname: foo.example.com iburst: true - hostname: bar.example.com iburst: true - hostname: baz.example.com iburst: true roles: - linux-system-roles.timesync 

Utilizar Ansible Roles em vez de escrever todo o conteúdo de automação em um único playbook oferece vários benefícios:

Reutilização e compartilhamento

Os roles foram projetados como unidades de automação reutilizáveis. Como os roles ajudam a separar os agrupamentos lógicos de tarefas de automação do contexto de um único play ou playbook, você pode reutilizá-los em vários plays ou playbooks e compartilhá-los para que sejam reutilizados em outros projetos.

Modularidade

O uso de roles incentiva uma abordagem de automação modular, em que cada role é responsável por uma funcionalidade específica. Essa abordagem facilita a compreensão, a manutenção e a solução de problemas do código de automação.

Organização

Os Ansible Roles fornecem uma maneira estruturada de organizar tarefas, templates, arquivos e variáveis. Essa estrutura facilita o gerenciamento de configurações de automação complexas, pois todos os elementos relacionados a um role específico estão contidos em seu diretório.

Parametrização

Os roles permitem definir variáveis padrão que podem ser substituídas quando o role é usado em um playbook do Ansible. Desse modo, é mais fácil ajustar o comportamento de um role a diferentes ambientes ou casos de uso sem modificar o role em si.

Controle de versão e gerenciamento de dependências

É possível criar versões para os roles, bem como especificar as dependências de um role em um arquivo meta/main.yml dentro dele. Como resultado, você pode gerenciar versões e dependências específicas, garantindo a estabilidade e a consistência em ambientes diferentes.

Teste

A estrutura dos roles facilita a aplicação de metodologias de teste. Você pode escrever testes específicos para um role a fim de garantir que ele se comporte como o esperado antes de integrá-lo a playbooks maiores.

Simplicidade

Em projetos maiores ou mais complexos, os roles simplificam o uso dos playbooks do Ansible. Em vez de ter um grande playbook com todas as tarefas, handlers e templates, você pode escrever um playbook muito mais conciso, que as pessoas consigam ler e compreender com facilidade. Isso também facilita a identificação de roles reutilizáveis em novos projetos, reduzindo o tempo necessário para escrever o conteúdo de automação e simplificando os fluxos de trabalho. 

Um guia do Red Hat Ansible Automation Platform para iniciantes

Você pode criar um novo role com o comando ansible-galaxy role init role_name, que produzirá um diretório seguindo a estrutura padrão para diretórios de role. Depois de verificar o diretório, você poderá definir tarefas, variáveis padrão e outros componentes. Também é possível adicionar a documentação a um arquivo README.md e meta/main.yml, embora isso não seja necessário para que o role funcione.

A criação de um novo role pode exigir uma experiência mais avançada com o Ansible e apresentar um desafio para as equipes que ainda estão aprendendo a criar conteúdo de automação. Para facilitar esse processo, desenvolvedores de automação novos ou experientes podem usufruir do Red Hat® Ansible Lightspeed com IBM watsonx Code Assistant, um serviço de IA generativa que fornece recomendações de código com base nas práticas recomendadas do Ansible. Utilizando prompts em linguagem natural, você pode descrever a automação que deseja alcançar e o Ansible Lightspeed com watsonx Code Assistant oferecerá sugestões de conteúdo com uma ou várias tarefas. Em seguida, as tarefas geradas poderão ser incluídas em um Ansible Role ou playbook.

O Ansible Lightspeed com watsonx Code Assistant reduz o esforço necessário para criar, manter e melhorar a qualidade do código do Ansible, resultando em maior produtividade e menor tempo de adoção da automação. 

A facilidade de compartilhar Ansible Roles permite que você incorpore roles bem gerenciados e testados na sua automação. Os roles podem ser compartilhados nos seguintes repositórios:

  • Ansible Galaxy: um repositório gratuito para compartilhar roles e outros conteúdos do Ansible com a comunidade geral do Ansible. Os roles podem ser enviados ao Ansible Galaxy por meio da interface de linha de comando (CLI), e as coleções podem ser compartilhadas via interface web. Como o Ansible Galaxy é um site da comunidade, a Red Hat não avalia, certifica ou recomenda seu conteúdo.
  • Ansible automation hub: incluído na subscrição do Red Hat Ansible Automation Platform, o Ansible automation hub é um repositório central para encontrar, compartilhar e fazer download de Ansible Content Collections. Hospedado pela Red Hat, o Ansible automation hub contém conteúdo certificado e validado da Red Hat e de fornecedores de software independentes (ISV) parceiros.
  • Automation hub privado: este repositório on-premise permite que as organizações gerenciem, compartilhem e selecionem conteúdo dentro da própria organização. Você pode compartilhar roles e outros conteúdos de automação em sua empresa, permitindo que as equipes simplifiquem os fluxos de trabalho e acelerem a automação. 

O Red Hat Ansible Automation Platform é uma plataforma unificada projetada para ajudar organizações a acelerar, orquestrar e inovar por meio da automação. Com sua subscrição da Red Hat, você obtém acesso a Red Hat Certified Content Collections e ao conteúdo validado do Ansible, disponíveis no Ansible automation hub.

A subscrição também inclui o Red Hat Ansible Lightspeed com IBM watsonx Code Assistant, que simplifica o processo de escrever e aprimorar as tarefas incluídas nos Ansible Roles. Com ele, as equipes de automação podem criar conteúdo com mais eficiência. Totalmente integrado ao Visual Studio Code, o Ansible Lightspeed oferece o que os desenvolvedores de automação precisam: você pode criar Ansible Roles e playbooks alinhados às práticas recomendadas sem precisar alternar entre ambientes de desenvolvimento.

O Ansible Lightspeed também oferece recursos de correspondência de fontes de conteúdo, permitindo verificar os dados de treinamento da fonte para obter sugestões e tomar decisões melhores ao criar roles para seus usuários. Com modelos treinados em milhares de roles da comunidade Ansible e data points fornecidos pela Red Hat, o Ansible Lightspeed ajuda você a criar e melhorar o código do Ansible com precisão e transparência, atendendo às demandas organizacionais e acelerando a adoção da automação.

Leia mais

Artigo

Noções básicas do Ansible

O Ansible automatiza processos de TI como provisionamento e gerenciamento de configuração. Conheça as noções básicas do Ansible com esta introdução aos principais conceitos.

Artigo

O que é gerenciamento de processos de negócios?

Gerenciamento de processos de negócios (BPM) é a prática de modelar, analisar e otimizar processos de ponta a ponta para alcançar os objetivos estratégicos.

Artigo

Por que escolher a Red Hat para a automação?

O Red Hat Ansible Automation Platform oferece todas as ferramentas necessárias para compartilhar a automação entre as equipes e implementá-la por toda a empresa.

Leia mais sobre automação

Soluções Red Hat

Os consultores estratégicos da Red Hat fornecem uma visão geral da sua organização, analisam os desafios e ajudam a superá-los com soluções abrangentes e econômicas.

Uma plataforma com suporte completo para implementar a automação em escala, de ponta a ponta.

Conteúdo adicional

Treinamentos Red Hat

Treinamento gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Treinamento gratuito

Red Hat Ansible Automation for SAP