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 campotags
em 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.