Ansible Role

Copiar URL

Ansible® Role é uma unidade autossuficiente de automação do Ansible. É considerado 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 Ansible Playbook. 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      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # 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 referenciá-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.

Entenda como os Ansible Roles são utilizados

Recursos da Red Hat

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ça criando conteúdo de automação com playbooks individuais. Playbook é uma lista de tarefas de automação executadas para um inventário definido. As tarefas podem ser organizadas em um play, que consiste em 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 maioria 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ê planeja reutilizar os roles e o escopo.

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

- name: Manage timesync with 3 servers
  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 serem reutilizados em outros projetos.

Modularidade

O uso de roles incentiva uma abordagem de automação modular, em que cada role é responsável por umaAcesse recursos de aprendizagemfuncionalidade 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 ANsible Playbook. 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. 

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. Após 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 continuam 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. 

Acesse o hub de treinamentos Ansible Automation Platform

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 na 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 ao 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.

Veja mais motivos para escolher a Red Hat para a automação
Hub

Blog da Red Hat

Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

O que é CloudOps?

CloudOps, sigla em inglês para operações na nuvem, é um modelo que combina práticas recomendadas e operações de TI no gerenciamento de ambientes de nuvem.

O que é a migração para a nuvem? E como a automação pode ajudar?

A migração para a nuvem é o processo de transferir aplicações, cargas de trabalho e dados para uma nuvem pública ou privada.

Qual opção de implantação do Red Hat Ansible Automation Platform é a ideal para você?

O que vai ditar como a implantação do Ansible® Automation Platform será instalada, gerenciada e mantida é nível de flexibilidade ou personalização que a sua empresa necessita.

Automação e gerenciamento: leitura recomendada

Produto em destaque

Artigos relacionados