Automação Altamente Eficiente com Ansible AWX

Você está cansado de executar manualmente playbooks e comandos do Ansible toda vez no seu controlador de host Ansible? Por que não usar uma interface web e facilitar sua vida com o Ansible AWX?

O AWX é uma aplicação web de código aberto patrocinada pela Red Hat que fornece uma interface de usuário e API para realizar todas as tarefas do Ansible. E neste tutorial, você aprenderá a instalar o Ansible AWX em uma máquina Ubuntu e gerenciar inventários usando o Ansible AWX.

Eleve seu jogo com automação altamente eficaz usando o Ansible AWX hoje!

Pré-requisitos

Este tutorial consiste em instruções passo a passo. Se você quiser acompanhar, certifique-se de ter o seguinte em vigor:

  • Docker – Este tutorial utiliza o Docker v19.03.11 em uma máquina com a versão Ubuntu 20.04.4 LTS.
  • Python v3.6 ou posterior instalado na máquina host do seu controlador Ansible – Este tutorial usa Python v3.8.10.
  • A GitHub account with one private and one public repository created in GitHub that you will use to store Ansible Playbook.

Instalando Dependências e Configurando o Ansible AWX

O Ansible AWS foi a base para criar o Ansible Tower. O Ansible AWX torna o Ansible mais fácil de ser utilizado por equipes de TI para testes; em um laboratório, desenvolvimento, ou outro ambiente de POC.

Já que o Ansible AWS não vem instalado por padrão no seu sistema Linux, você primeiro terá que instalá-lo para poder executá-lo como um contêiner múltiplo usando o Ansible Playbook.

1. Execute cada comando abaixo para atualizar os pacotes do seu sistema e instalar o plugin docker-compose.

# Atualizar pacotes
sudo apt-get update
# Instalar Docker Compose
sudo apt-get install docker-compose-plugin
Updating System Packages and Installing docker-compose

2. Em seguida, execute o seguinte comando para verificar a versão do docker compose instalada na sua máquina.

docker compose version

A saída abaixo mostra que a última versão do Docker Compose, v2.5.0, está instalada, confirmando que o Docker Compose está corretamente instalado.

Verifying Docker Compose Version

3. Execute cada comando abaixo para instalar pacotes como pré-requisitos para trabalhar com o Ansible AWX.

# Instala o NodeJS, pois a AWS depende do NodeJS.
sudo apt install nodejs npm
# Instala o Python3, que será usado posteriormente para executar o Ansible Playbook.
sudo apt install python3-pip git pwgen unzip
# Instala o requests para permitir o envio fácil de solicitações HTTP/1.1.
sudo pip3 install requests==2.22.0 docker-compose==1.29.2
Installing npm Software
Installing Python
Installing Requests

4. Agora, execute os seguintes comandos para baixar (wget) o arquivo de pacote AWX do repositório Git público e, em seguida, descompacte o pacote.

# Baixa o arquivo de pacote AWX
wget https://github.com/ansible/awx/archive/17.1.0.zip
# Descompacta o arquivo de pacote AWX
unzip 17.1.0.zip
Downloading the AWS Package from the Git Repository

5. Execute os comandos abaixo para mudar (cd) para o diretório de instalação do AWX (awx-17.1.0/installer/) e gerar a senha aleatória (pwgen).

Seu diretório de instalação do AWX (awx-17.1.0/installer/) pode variar, dependendo da versão do Ansible AWX instalada em sua máquina.

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

Anote a senha gerada, pois você a usará como chave secreta na console do AWX.

Generating a Random Password

6. Por fim, em seu editor de texto, abra o arquivo inventory dentro do diretório de instalação do AWX (awx-17.1.0/installer/). O arquivo inventory contém as configurações do AWX, que serão usadas ao fazer login na interface do AWX.

No arquivo de inventário, altere o valor de admin_password para password e secret_key com a senha aleatória que você gerou no passo cinco.

Updating Credentials of Ansible AWX in the Inventory File

Instalando e Iniciando o Ansible AWX com o Ansible Playbook

Você configurou corretamente o Ansible AWX e agora é hora de instalá-lo usando um playbook do Ansible (install.yml). O playbook do Ansible install.yml vem com o pacote Ansible AWX que você extraiu. Este playbook contém tarefas para executar comandos para construir uma imagem Docker e executar vários containers.

1. Chame o comando ansible-playbook abaixo para executar o playbook do Ansible install.yml.

ansible-playbook -i inventory install.yml 

Abaixo, você pode ver que algumas tarefas mudaram de estado, indicando que o host AWX não estava no estado adequado e foi modificado para executar o comando.

Por outro lado, outras tarefas mostram um estado ok, o que indica que elas não requerem nenhuma alteração.

Executing the Ansible Playbook (install.yml)

2. Em seguida, execute o comando docker abaixo para listar todos os containers Docker disponíveis.

docker ps

O resultado abaixo mostra os containers em execução (awx_tasks, awx_redis, awx_web e awx_postgres), confirmando que o AWX está instalado corretamente.

Verifying all Docker Containers

3. Por fim, abra seu navegador favorito e acesse o Ansible AWX (https://AWX-HOST-IP:80). Certifique-se de substituir AWX-HOST-IP pelo endereço IP do seu host Ansible. Se tudo correr bem, você verá a página de login do Ansible AWX no seu navegador, como mostrado abaixo.

Forneça seu nome de usuário (admin) e senha (password) e clique em Log in para acessar o painel do Ansible AWX. Essas credenciais são as que você configurou na última etapa da seção “Instalando Dependências e Configurando o Ansible AWX”.

AWX instala automaticamente um certificado autoassinado para comunicação HTTPS, o que pode exigir aceitação em seu navegador.

Accessing the Ansible AWX Dashboard UI

Após fazer login, seu navegador será redirecionado para o Painel AWX, conforme mostrado abaixo.

Viewing the AWX Dashboard

Criando e Gerenciando Inventários

Agora que você tem acesso ao painel Ansible AWX, fique à vontade para trabalhar na automação de tarefas. Neste tutorial, você irá gerenciar vários componentes do Ansible dentro do Painel Ansible AWX. Mas antes, será necessário criar e gerenciar inventários.

1. No Painel AWX, clique em Inventários para abrir a lista de inventários armazenados no Ansible AWX. Por padrão, um inventário de demonstração está presente, conforme mostrado abaixo.

Ignore o inventário de demonstração e clique no botão suspenso Adicionar para criar um novo inventário.

Creating a New Inventory

2. Em seguida, especifique os parâmetros abaixo na página Criar novo inventário para configurar seu primeiro inventário no Painel Ansible AWX:

  • NomeATA Learning (Você pode fornecer o nome que desejar).
  • Descrição – Descreva o inventário, o que é opcional, mas ajuda a identificar inventários, entre muitos outros.
  • Organização – Escolha a opção Padrão. O AWX cria uma organização padrão, mas você também pode criar a sua própria.

Depois de especificar todos os detalhes acima, clique no botão salvar, conforme mostrado abaixo.

Creating an Inventory in the Ansible AWX Dashboard

3. Por último, clique na guia Inventários (painel esquerdo) para verificar se o inventário recém-criado (ATA Learning) existe, como mostrado abaixo.

Verifying the Inventory in the Ansible AWX Dashboard

Criando e Executando Trabalhos do Ansible

Você configurou com sucesso seu inventário, mas no momento ele não serve para nada, a menos que você o chame com um trabalho. Um trabalho é uma instância do AWX lançando um playbook do Ansible contra o inventário de um host. E, é claro, antes de poder chamar um trabalho, primeiro você precisa criar um:

Para criar um trabalho do Ansible e executá-lo:

1. Crie um arquivo YML dentro do repositório do GitHub e copie/cole o playbook abaixo. Você pode nomear o arquivo YML como quiser, mas este tutorial usa o playbook chamado ata.yml.

---
  - name: "Playing with Ansible."
 # O Playbook do Ansible será executado no Localhost onde o AWX está instalado 
    hosts: localhost
    connection: local
    tasks:
 # A tarefa abaixo executará a lista de diretórios e arquivos presentes 
    - name: "just execute a ls -lrt command"
      shell: "ls -lrt"
      register: "output"
 # A Saída da tarefa acima será exibida na Tela 
    - debug: var=output.stdout_lines
Creating a YML File in the Git Repository

2. Vá para o painel de controle do Ansible AWX e clique em Projetos no painel esquerdo para acessar a lista de projetos disponíveis. Você precisará de um projeto antes de poder criar um trabalho.

Ignore o Projeto de Demonstração e clique no botão Adicionar para criar um novo projeto.

Initializing Adding a New Project

3. Forneça os detalhes do novo projeto conforme abaixo e clique em Salvar para salvar o novo projeto:

  • Nome – O nome do projeto pode ser qualquer coisa que você goste, mas este tutorial define o nome do projeto como myproject.
  • Descrição – Assim como em seu inventário, adicionar uma descrição é opcional, mas ajuda a identificar projetos uns dos outros.
  • Organização – Semelhante ao seu inventário, escolha Padrão para a organização.
  • Tipo de Credencial de Controle de Origem – Escolha Git como seu SCM.
  • URL de Controle de Origem – Especifique o URL do GitHub do seu código-fonte.
Creating a New Project

4. Após criar um projeto, clique em Modelos na barra lateral esquerda para acessar todos os modelos disponíveis, conforme mostrado abaixo.

Na página Modelos, clique no botão suspenso Adicionar e escolha a opção Adicionar modelo de trabalho para criar um modelo.

Creating a New Job Template

5. Agora, especifique os detalhes abaixo conforme o exemplo e clique em Salvar na parte inferior para salvar o novo modelo de trabalho:

  • Nome – Defina o nome do modelo de trabalho como desejar, mas este tutorial define o nome do modelo de trabalho como myjob.
  • Tipo de Trabalho – Defina a ação que o trabalho realizará (Executar).
  • Projeto – Escolha o projeto que você criou no terceiro passo (myproject).
  • Inventário – Escolha o inventário que você criou no segundo passo da seção “Criando e Gerenciando Inventários” (ATA Learning).
  • Manual – Escolha o manual que você criou na etapa um da seção “Criando e Executando Tarefas do Ansible” (ata.yml).
Specifying Job Template Details

6. Por fim, na página de Modelos, inicie a tarefa recém-criada com o seguinte:

  • Clique na tarefa (minhatarefa) para acessar a página de informações da tarefa.
  • Navegue até a aba Detalhes, onde você verá os detalhes da tarefa.
  • Clique em Iniciar na parte inferior da página para iniciar a tarefa.
Launching the Newly-created Job

Como você pode ver abaixo, a tarefa foi executada com sucesso no localhost e listou todos os arquivos dentro do diretório especificado no manual (ata.yml).

Executing the Job Template

Conclusão

Neste tutorial, você aproveitou a ferramenta de código aberto Ansible AWX para gerenciar manuais do Ansible, inventários e tarefas com um único painel de controle de IU. Você aprendeu a executar uma tarefa do Ansible, como listar arquivos em um diretório específico.

Agora que você tem um conhecimento sólido do software Ansible AWX, está disposto a executar todos os seus futuros manuais do Ansible usando o Ansible AWX? Talvez queira automatizar tarefas adicionando tarefas cron?

Source:
https://adamtheautomator.com/ansible-awx/