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:
-
Distribuição do SO
Vamos selecionar o
CentOS Stream 9, pois ele possui arquivos de configuração prontos para instalar oAnsible. -
Região do Servidor
Escolha a região mais próxima da sua localização. No meu caso, escolhi
São Paulo. -
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. -
Detalhes
Nesta seção, atribua um nome, como
centos-ansible. Deixe o campotagsem branco e escolha uma senha para o usuárioroot.
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.