Ansible Role - o que é e como ele é utilizado?
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.
Como os Ansible Roles funcionam?
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.
Recursos da Red Hat
Por que usar um Ansible Role em vez de um Ansible Playbook?
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.
Como criar um Ansible Role
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.
Como compartilhar Ansible Roles
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.
Por que escolher a Red Hat?
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.
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.