Neste laboratório, você aprenderá como instalar e configurar o Ansible em um sistema Ubuntu. Ansible é uma poderosa ferramenta de automação de código aberto que simplifica o gerenciamento de configuração, a implantação de aplicativos e a automação de tarefas. Ao final deste laboratório, você terá o Ansible instalado e configurado, pronto para gerenciar sistemas remotos de forma eficiente.
Atualizar Pacotes do Sistema
Antes de instalar qualquer software novo, é crucial garantir que seu sistema tenha as atualizações mais recentes. Isso ajuda a prevenir potenciais conflitos e garante que você tenha os patches de segurança mais recentes.
Primeiro, atualize as listas de pacotes:
sudo apt update
Este comando conecta-se aos repositórios de software do Ubuntu e baixa informações sobre os pacotes mais recentes disponíveis. Você pode ver uma saída como esta:
Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Não se preocupe se você vir algumas linhas "Hit" ou "Get" - isso é normal e mostra quais informações de repositório estão sendo atualizadas.
Instalar Ansible
Agora que seu sistema está atualizado, você pode prosseguir com a instalação do Ansible. Os repositórios padrão do Ubuntu incluem o Ansible, o que torna o processo de instalação simples.
Instale o Ansible usando o seguinte comando:
sudo apt install ansible -y
Vamos detalhar este comando:
sudo: Executa o comando com privilégios administrativos, o que é necessário para instalar software.
apt install: Indica ao gerenciador de pacotes para instalar um novo pacote.
ansible: Este é o nome do pacote que queremos instalar.
-y: Esta flag responde automaticamente "sim" a quaisquer prompts durante a instalação.
Você verá uma saída mostrando o progresso da instalação:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
Processing triggers for man-db (2.10.2-1) ...
Não se assuste com a quantidade de texto - isso está apenas mostrando todas as dependências sendo instaladas junto com o Ansible.
Após a conclusão da instalação, é uma boa prática verificar se o Ansible foi instalado corretamente. Você pode fazer isso verificando sua versão:
ansible --version
Este comando deve exibir informações sobre a versão do Ansible instalada:
Se você vir uma saída semelhante a esta, parabéns! O Ansible agora está instalado em seu sistema.
Configurar SSH para Ansible
O Ansible usa SSH para se comunicar com nós gerenciados. Para simplificar este processo e aprimorar a segurança, configuraremos a autenticação baseada em chave SSH. Isso permite que o Ansible se conecte a outras máquinas sem precisar inserir uma senha a cada vez.
Primeiro, gere um par de chaves SSH:
ssh-keygen -t rsa -b 4096 -C "labex@example.com"
Vamos detalhar este comando:
ssh-keygen: Este é o programa que gera o par de chaves.
-t rsa: Especifica que queremos uma chave do tipo RSA.
-b 4096: Define o tamanho da chave para 4096 bits, o que é muito seguro.
-C "labex@example.com": Adiciona um comentário à chave, geralmente um endereço de e-mail.
Quando você executa este comando, você verá prompts:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Pressione Enter para aceitar o local padrão.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Para este laboratório, você pode deixar a senha vazia pressionando Enter duas vezes. Em um ambiente de produção, você deve usar uma senha forte.
Você verá uma saída confirmando a criação da chave:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCDEFG labex@example.com
The key's randomart image is:
+---[RSA 4096]----+
| . |
| . . |
| o |
| . o |
| + = S |
| + * + |
| . = o . |
| . + = |
| +.+. |
+----[SHA256]-----+
Em seguida, precisamos copiar esta chave para a máquina local. Em um cenário real, você copiaria isso para hosts remotos, mas para este laboratório, usaremos a máquina local:
ssh-copy-id labex@localhost
Digite yes para continuar.
Você será solicitado a inserir a senha do usuário labex.
Para este ambiente de laboratório, você pode encontrar a senha abrindo o terminal VNC e executando:
Não feche a sessão do terminal atual e abra um novo terminal Xfce para executar o seguinte comando:
echo $PASSWORD
Nota: Você deve executar este comando no terminal VNC. A senha está disponível apenas no terminal VNC e não é acessível via SSH ou terminal web.
Insira a senha quando solicitado por ssh-copy-id. Você deve ver uma saída como:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
labex@localhost's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'labex@localhost'"
and check to make sure that only the key(s) you wanted were added.
Para verificar se a configuração da chave SSH foi bem-sucedida, tente fazer SSH na máquina local:
ssh labex@localhost
Se a chave foi configurada corretamente, você deve ser capaz de fazer login sem ser solicitado a inserir uma senha. Você verá um novo prompt de comando. Digite exit para retornar à sua sessão original.
Criar e Configurar o Inventário do Ansible
O inventário do Ansible é um arquivo que define os hosts e grupos de hosts nos quais comandos, módulos e tarefas em um playbook operam. É como uma lista de endereços para o Ansible, informando a quais máquinas ele pode se conectar.
Primeiro, crie o diretório de configuração do Ansible:
sudo mkdir -p /etc/ansible
Este comando cria o diretório /etc/ansible se ele ainda não existir. A flag -p garante que ele não gere um erro se o diretório já existir.
Agora, crie e edite o arquivo de inventário:
sudo nano /etc/ansible/hosts
Isso abre o editor de texto nano. Se você é novo no nano, não se preocupe - é um editor simples e fácil de usar.
[local] e [webservers] são nomes de grupos. Você pode usá-los para organizar seus hosts.
localhost ansible_connection=local diz ao Ansible para se conectar à máquina local diretamente, sem usar SSH.
web1 ansible_host=localhost ansible_connection=ssh ansible_user=labex configura um host chamado web1. Para este laboratório, ele também está se conectando ao localhost, mas usando SSH e fazendo login como o usuário labex.
Para salvar o arquivo no nano, pressione Ctrl+X, depois Y e, finalmente, Enter.
Para verificar o conteúdo do arquivo de inventário, use o comando cat:
cat /etc/ansible/hosts
Você deve ver o conteúdo que acabou de adicionar ao arquivo.
Testar a Conectividade do Ansible
Agora que temos o Ansible instalado e configurado, vamos testar a conectividade para garantir que tudo esteja funcionando corretamente.
Primeiro, vamos fazer ping em todos os hosts em nosso inventário:
ansible all -m ping
Vamos detalhar este comando:
ansible: Este é o comando base para executar o Ansible.
all: Isso diz ao Ansible para executar em todos os hosts no inventário.
-m ping: Isso especifica o módulo do Ansible a ser usado. O módulo ping verifica se os hosts estão respondendo.
Se você vir "SUCCESS" para ambos os hosts, significa que o Ansible pode se conectar e se comunicar com sucesso com esses hosts.
Em seguida, vamos tentar executar um comando simples em todos os hosts:
ansible all -a "uptime"
Este comando usa o módulo command do Ansible (o padrão quando nenhum módulo é especificado com -m) para executar o comando uptime em todos os hosts. O comando uptime mostra há quanto tempo o sistema está em execução.
Esta saída mostra que o Ansible executou com sucesso o comando uptime em ambos os hosts. O status "CHANGED" indica que o comando foi executado com sucesso e produziu uma saída.
Dica: Você pode ver um aviso de depreciação "Distribution ubuntu 22.04 on host localhost should use /usr/bin/python3", que se deve à alteração do interpretador Python padrão em versões mais recentes do Ubuntu.
Se você deseja suprimir este aviso, pode adicionar a seguinte linha ao arquivo /etc/ansible/hosts:
Esta linha diz ao Ansible para usar o Python 3 explicitamente para todos os hosts. Depois de adicionar esta linha, você pode executar o comando ansible all -m ping novamente para verificar se o aviso não aparece mais.
Resumo
Parabéns! Neste laboratório, você instalou e configurou com sucesso o Ansible em um sistema Ubuntu. Você aprendeu como:
Atualizar os pacotes do sistema para garantir um ambiente estável para o Ansible.
Instalar o Ansible usando o gerenciador de pacotes.
Configurar a autenticação baseada em chave SSH para conexões seguras e sem senha.
Criar e configurar um arquivo de inventário do Ansible para definir os hosts gerenciados.
Testar a conectividade do Ansible e executar comandos básicos nos hosts gerenciados.
Esses passos fundamentais fornecem um ponto de partida sólido para usar o Ansible para automatizar várias tarefas de TI, desde execuções de comandos simples até gerenciamento de configuração complexa e implantações de aplicativos.
Lembre-se, este laboratório usou localhost para fins de demonstração, mas em cenários do mundo real, você normalmente gerenciaria vários hosts remotos. Os princípios e comandos que você aprendeu aqui podem ser facilmente aplicados ao gerenciamento de servidores remotos em toda a sua infraestrutura.
À medida que você continua sua jornada com o Ansible, descobrirá seu poder na otimização de operações e no aprimoramento da produtividade na administração de sistemas e nas práticas de DevOps. Considere explorar os playbooks do Ansible em seguida, que permitem automatizar tarefas e fluxos de trabalho mais complexos.