O mínimo que você precisa saber sobre ANSIBLE!

Este tutorial é uma transcrição dos passos realizados no vídeo O mínimo que você precisa saber sobre ANSIBLE! do canal Diolinux. Ele serve como um complemento ao conteúdo mostrado no vídeo.

NOTA Os passos a seguir contêm algumas diferenças em relação aos mostrados no vídeo. Os servidores localizados em São Paulo têm um custo de $7/mês, enquanto em outras localidades podemos encontrar por $5/mês.

O que é o Ansible

O Ansible é uma ferramenta de automação de TI de código aberto que facilita a automação de tarefas como provisionamento, gerenciamento de configurações, implantação de aplicativos e orquestração de serviços. Ele é amplamente utilizado para simplificar e agilizar o gerenciamento de infraestrutura e operações de TI.

Configuração do Lab na Linode

Acesse o endereço https://linode.com/diolinux para receber $100 de crédito para utilizar os serviços da Linode. Após realizar o cadastro e inserir seus dados pessoais e informações de pagamento, clique em Create Linode.

Vamos iniciar as configurações do nosso Lab:

  1. Distribuição do SO

    Vamos selecionar o CentOS Stream 9, pois ele possui arquivos de configuração prontos para instalar o Ansible.

  2. Região do Servidor

    Escolha a região mais próxima da sua localização. No meu caso, escolhi São Paulo.

  3. Plano Linode

    Como temos $100 de crédito e este é um projeto educativo, vamos escolher a opção mais barata na aba Shared CPU, que atualmente custa $7/mês.

  4. Detalhes

    Nesta seção, atribua um nome, como centos-ansible. Deixe o campo tags em branco e escolha uma senha para o usuário root.

Após esses passos, clique em Create Linode. Este será o nosso Nó Central. Em seguida, crie uma nova máquina seguindo os mesmos passos anteriores, mas altere a distribuição para Debian 11, a descrição da máquina para debian e atribua uma nova senha para o usuário root.

Agora, vá para a máquina centos-ansible e copie a chave de acesso ssh. Abra o terminal na sua máquina local, cole o conteúdo, confirme digitando yes e insira sua senha. Dessa forma, continuaremos as configurações na nossa máquina.

Instalação do Ansible

Vamos instalar o Ansible adicionando à nossa máquina um repositório CentOS com o comando:

yum install epel-release

Após o download dos pacotes, confirme as questões digitando y. Em seguida, instale o Ansible com o comando:

yum install ansible

Configuração dos Hosts

Para configurar os nossos hosts, abra o arquivo hosts na pasta /etc/ansible com os comandos abaixo:

cd /etc/ansible
nano hosts

Dentro desse arquivo, crie um grupo para adicionar as nossas máquinas:

[distros]

172.233.27.75

[distros:vars]

ansible_user=root
ansible_password=minhasenha

Configuração do Ansible

O próximo passo é alterar o arquivo ansible.cfg. Execute os seguintes comandos para gerar e abrir o arquivo de exemplo:

ansible-config init --disabled > ansible.cfg
nano ansible.cfg

Com o arquivo aberto, localize a chave host_key_checking utilizando o comando ^W. Descomente a linha apagando o ; e atribua o valor False. Salve o arquivo após fazer essas alterações.

Testando a Configuração

Para testar o funcionamento, execute o comando:

ansible distros -m ping

Gerenciamento de Múltiplas Máquinas

Neste tutorial, criamos apenas a máquina debian para gerenciar, mas podemos usar o Ansible para rodar comandos em diversas máquinas ao mesmo tempo. Por isso, é interessante criar grupos que contenham distros do mesmo tipo.

Criamos o grupo distros e adicionamos apenas uma máquina Debian. Poderíamos adicionar também máquinas Ubuntu, Pop!OS, entre outras distribuições baseadas no Debian. Dessa forma, ao rodar o comando ansible distros -a "apt-get update", ele funcionaria em todas as máquinas do grupo.

Podemos realizar várias ações. Outro exemplo é verificar por quanto tempo as máquinas estão ativas:

ansible distros -a "uptime"

Playbooks

Quando as tarefas se tornam mais complexas, surge a necessidade de melhorar a forma de realizar esses passos. Para isso, existem os Playbooks, que são arquivos de configuração YAML onde podemos declarar essas ações.

Dica para Escrever Playbooks no VSCode

Uma dica para escrever esses arquivos utilizando a IDE VSCode é instalar a extensão do Ansible. Com essa extensão, podemos escrever o seguinte arquivo:

playbook.yml

---
- name: Instalar o nginx
  hosts: distros
  become: yes
  tasks:
    - name: Instalar o servidor web nginx
      apt:
        name: nginx
        state: present

Os arquivos yml são extremamente sensíveis à indentação, por isso preste atenção em todos os espaçamentos.

Estrutura do Playbook

O arquivo começa com ---, indicando o início do documento YAML. Em seguida, declaramos o nome da Jogada (termo utilizado para nomear as tarefas dos playbooks).

Na linha abaixo, atribuímos os hosts, onde adicionamos o nosso grupo distros.

A linha become: yes informa que a tarefa será executada como usuário root.

Depois, definimos as nossas tarefas. No exemplo, declaramos o pacote apt como o gerenciador de pacotes das nossas máquinas, especificamos o nome do pacote que queremos instalar (nginx) e o state: present, que indica que queremos o pacote instalado.

Estados do Pacote

Podemos atribuir diferentes estados no state, como:

  • absent: Para quando não queremos o pacote no servidor.
  • latest: Para instalar a última versão disponível no repositório.

Criando e Executando o Playbook

Com essas informações, volte à sua máquina remota centos-ansible e crie o arquivo playbook.yml no diretório /etc/ansible:

nano playbook.yml

Adicione o conteúdo do arquivo que criamos no VSCode e salve.

Agora, execute o comando:

ansible-playbook playbook.yml

Feito isso, todas as tarefas presentes no arquivo serão executadas em nossas máquinas, e o Ansible guardará o estado. Caso rodemos o arquivo novamente, a tarefa Instalar o servidor web nginx já estará marcada como realizada.