O que é e como funciona um módulo do Ansible?

Copiar URL

Um módulo do Ansible® é um trecho de código de automação que executa ações em uma máquina local, numa interface de programação de aplicações (API) ou em um host remoto. Geralmente, esses módulos são códigos escritos em Python. Eles contêm os metadados que definem quando e onde uma tarefa de automação específica deve ser executada e quais usuários podem executá-la Existem milhares de módulos do Ansible disponíveis para download em repositórios como o Ansible automation hub e o Ansible Galaxy. Mas você pode criar seus próprios módulos personalizados e compartilha-los com outros usuários do Ansible da sua empresa ou da comunidade.

Os módulos são capazes de executar uma ampla variedade de funções de TI em diversos cenários, como provisionamento e o gerenciamento de redes, segurança, serviços de nuvem, contas de usuários, configurações de sistemas e comunicações. Para entender como os módulos Ansible podem ajudar você a automatizar esses e outros casos de uso, é importante compreender a relação entre módulos e outros componentes essenciais da  automação do Ansible, como tarefas, plays, playbooks e roles.

  • Tarefa: define a ação a ser aplicada a um host gerenciado, mas sem especificá-lo. Você pode acionar um módulo dentro de uma tarefa para que ele seja executado em um host. No entanto, a especificação desse host é feita fora da tarefa, mais precisamente no nível do play.
  • Play: principal central de execução do Ansible, ele inclui uma lista de tarefas mapeadas para hosts gerenciados específicos. Além disso, ele contém variáveis e, nos casos de uso mais complexos, roles.
  • Ansible Playbook: inclui um ou mais plays. Os playbooks são escritos em YAML, o que os torna legíveis por humanos e fáceis de compartilhar.
  • Ansible Role: função que empacota conteúdos do Ansible, como tarefas, handlers (manipuladores), variáveis, plugins, templates e arquivos, para serem usados em um play. É possível importar Ansible Roles para um play e reutilizá-los em outros plays e playbooks. Você também compartilhá-los com outros usuários de automação.
  • Coleções: pacotes de conteúdo do Ansible projetados para acelerar o trabalho dos desenvolvedores de automação, aumentando a produtividade. As coleções são o método preferencial para empacotar e compartilhar módulos.
  • Plugins: trechos de código que expandem a funcionalidade básica do Ansible e normalmente são executados no nó de controle. Embora os módulos sejam um tipo de plugin, eles geralmente executam tarefas em um destino específico, não no nó de controle. 

Considere da seguinte forma: se as tarefas são trabalhos a serem concluídos, os módulos são as ferramentas necessárias para realizá-los. Uma tarefa define uma ação que precisa ser realizada e o módulo é executado em um host gerenciado para concluir essa ação, coletando valores de retorno em formato JSON ao ser finalizado.

Normalmente, os módulos são armazenados em uma biblioteca de playbooks e acionados quando um playbook executa a tarefa a eles associada. No entanto, é possível incluir módulos em roles ou coleções Quando um Ansible Role é importado para um playbook, os módulos no diretório da role realizam as tarefas definidas, otimizando a clareza e o estilo da automação Um módulo escrito em um play individual será utilizado uma única vez. Já os módulos inseridos em um role são executados sempre que esse role é acionado no playbook.

Os três exemplos de módulos a seguir estão incluídos no Ansible Core e fazem parte de todas as instalações do Ansible:

  • Módulo dnf (ansible.builtin.dnf): instala, atualiza e remove pacotes e grupos via gerenciador de pacotes de software dnf, que é o padrão do Fedora.

  • Módulo service (ansible.builtin.service): gerencia serviços em hosts remotos. Alguns exemplos de ações são iniciar, parar e reiniciar um serviço.

  • Módulo command (ansible.builtin.command): executa comandos nos destinos.

Você pode criar seu próprio módulo do Ansible para realizar uma tarefa específica quando os módulos que já existem não forem suficientes para seu caso de uso de automação. Embora o processo de criação de módulos varie dependendo da complexidade das tarefas de automação, você pode desenvolver seu próprio módulo seguindo estas etapas:

  1. Crie um diretório de biblioteca no seu repositório.
  2. No diretório da biblioteca, crie um arquivo de módulo em Python ou na linguagem de programação que preferir.
  3. Desenvolva um playbook de teste no diretório da biblioteca.
  4. Execute o playbook para testar o módulo.

Os módulos devem ser curtos e ter como finalidade solucionar um problema muito específico. Isso é que os torna fáceis de testar, usar, reutilizar e compartilhar. Além disso, os módulos devem oferecer uma interface que aceite argumentos e ser idempotentes, ou seja, não devem fazer alterações caso identifiquem que o estado atual do nó é igual ao estado final desejado.

Usuários iniciantes no desenvolvimento de conteúdo do Ansible ou que queiram simplificar o processo de criação dos módulos podem utilizar o Content Builder, uma ferramenta da comunidade que gera módulos e outros plugins do Ansible para diversos casos de uso, como a criação de conteúdos para rede, segurança e nuvem.

Assim como os demais tipos de conteúdo do Ansible, os módulos são compartilháveis. Com uma subscrição do Red Hat® Ansible Automation Platform, você pode empacotar seus módulos em coleções e depois carregá-las no Ansible automation hub ou compartilhá-las com o restante da sua empresa por meio de um automation hub privado. Você também pode distribuir seus módulos no Ansible Galaxy, um repositório gratuito para compartilhamento de conteúdo do Ansible com usuários da comunidade.

Embora os módulos desempenhem um papel essencial na execução dos playbooks, eles também são muito úteis para empresas que desejem adotar uma abordagem mais avançada e proativa no gerenciamento de TI, utilizando a automação orientada por eventos.

Essa abordagem de automação conecta dados de eventos de TI a ações automatizadas. Assim, as equipes realizam menos etapas manuais para responder ou corrigir um problema. Um evento é qualquer ocorrência que prejudique a entrega de um serviço ou o gerenciamento da infraestrutura de TI.

Event-Driven Ansible, uma funcionalidade do Red Hat Ansible Automation Platform, é uma solução abrangente para equipes buscando os benefícios da automação orientada por eventos. Ele utiliza Ansible Rulebooks para responder a eventos com ações definidas pela sua equipe, que podem ser a execução de playbooks, roles, templates ou módulos. Um rulebook utiliza instruções condicionais do tipo "if-this-then-that" (se isso, então aquilo) para ajudar você a automatizar tarefas rotineiras, por exemplo, executar um playbook de correção em caso de uma interrupção do serviço.

Quando os dados do evento de origem atendem às condições especificadas no rulebook, o Ansible Automation Platform ativa as ações definidas por você, por exemplo, executar um playbook inteiro ou apenas um módulo para realizar uma ação específica. A resposta depende totalmente do que você quer que aconteça quando um determinado evento ocorrer e do que você estipulou no rulebook.

O exemplo abaixo demonstra como um módulo de depuração é acionado quando um evento originado em um webhook atende às condições definidas em um rulebook.

rulebook.yml:

--- - name: Listen for events on a webhook hosts: all ## Define our source for events sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 ## Define the conditions we are looking for rules: - name: Say Hello condition: event.payload.message == "Ansible is super cool" ## Define the action we should take should the condition be met action: run_playbook: name: say-what.yml 

O playbook say-what.yml:

- hosts: localhost connection: local tasks: - debug: msg: "Thank you, my friend!" 

Nesse caso, o rulebook especifica o que o playbook say-what.yml deve executar quando as condições definidas são atendidas. Como o módulo de depuração está incluído no playbook say-what.yml, ele é acionado sempre que o playbook é executado.

Como parte do Ansible Automation Platform, o Event-Driven Ansible tem o que você precisa para resolver eventos e entregar serviços de TI com rapidez e eficiência. Sua equipe pode concluir tarefas sem intervenção manual, liberando tempo para se concentrar em projetos mais estratégicos para a empresa.

A automação baseada em eventos muitas vezes depende de ferramentas de monitoramento externas para detectar ocorrências. Utilizar conteúdos do Ansible compatíveis com as plataformas e ferramentas que sua empresa já utiliza pode simplificar a adoção de fluxos de trabalho automatizados mais eficazes. Com uma subscrição do Red Hat Ansible Automation Platform, você tem acesso ao Ansible Content Collections com milhares de pacotes de módulos, roles, plugins e documentação. Isso inclui conteúdos do Red Hat Ansible Certified Content e conteúdos validados do Ansible desenvolvidos pela Red Hat e parceiros. Para fazer o download, basta acessar o Ansible automation hub,

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