Primeira Automação com Ansible

Rafael Monteiro
Semantix
Published in
4 min readDec 30, 2021
Automation applied to an efficient operation will magnify the efficiency (Bill Gates)

Objetivo do artigo

Este artigo tem o propósito de introduzir novos usuários à ferramenta, embora seja curto ele já lhe mostra o potencial da ferramenta e embora algumas pessoas optem por cursos para aprender la, acredito que a melhor forma de se aprender Ansible seja na prática. É uma ferramenta poderosa que tem muito conteúdo na internet e uma comunidade bem ativa.

O que é?

Ansible é um software de automação que permite se automatizar quase qualquer processo que um administrador de sistemas faz no seu dia a dia. Conta com uma série de bibliotecas sendo essas básicas do Ansible ou criadas pela comunidade.

Como regra central e como uma forma de padronizar as automações deixando elas mais User Friendly o Ansible conta com o sistema de Playbook Task, onde você cria uma grande automação chamada de Playbook que contem uma ou mais Tasks.

Para finalizar ele utiliza arquivos Yamls como principal formato de arquivo, então parte do padrão vem da estrutura dos Yamls em si.

Como instalar

É possível instalar o Ansible dentro de um ambiente virtual do Python. Abaixo trago a sequencia de passos para instalação tanto do ambiente quanto do Ansible dentro desse ambiente.

Primeiro é necessário instalar o Virtual Environment, existem dois que se destacam na utilização pela comunidade:

Escolha um, siga os links e faça os tutoriais.

Independente do Virtual Environment escolhido é necessário que o interpretador seja Python3, para que não tenha problemas futuramente.

Caso esteja tendo problemas de versão do Ansible é bem provável que você possua tanto o Python2 quanto o Python3 instalado e esteja dando conflito. Há duas maneiras de resolver isso:

- Desinstale o Ansible e o instale via Pip3 em um Virtual Environment como neste tutorial.

ou

- Coloque uma flag fixando o interpretador para o Python desejado ao rodar o Playbook.

Após instalar e inicializar o ambiente virtual é hora de instalar o Ansible.

  • pip3 install ansible==4.4.0

Primeira automação

Para o Ansible saber qual o destino da automação é necessário colocar em hosts o seu endereço IP. Se você acessar /etc/ansible/hosts irá reparar que podem ser colocados alguns endereços, mas isso não é muito recomendado, já que isso atrela sua automação a determinado host. O recomendado é que seja sempre utilizado um arquivo host ou somente a chave host personalizada dentro do diretório onde a automação esta localizada.

No Playbook abaixo utilizo a chave Hosts apontando para localhost. O Ansible vai ignorar o que esta dentro de /etc/ansible/hosts e irá utilizar o valor colocado na chave hosts.

---
- name: Playbook
hosts: localhost
tasks:
- name: Leaving a mark
command: "touch /tmp/ansible_was_here"

Copie o código acima, cole e salve como main.yaml em seguida rode o comando abaixo.

ansible-playbook main.yaml

Após rodar o comando acima você verá algo parecido com o log abaixo.

Log do comando.

Esse Playbook é composto com uma unica task, essa task irá criar um arquivo dentro da pasta tmp. Então para checar a veracidade da automação é só rodar o seguinte comando.

ls /tmp/ | grep ansible_was_here

Boas práticas e organização

Hosts

  • Para começar nas boas práticas é necessário ressaltar a importância de criar um arquivo ou colocar no Playbook principal do seu projeto o IP de destino, onde a automação será feita, isso evita que a automação quebre já que por padrão ela busca o host no arquivo /etc/ansible/hosts.

Variáveis

  • Use variáveis, o Ansible é uma ferramenta muito parecida com uma linguagem de programação, lhe permitindo criar códigos que podem ser reutilizados, evitando a repetição desnecessária de linhas. É oferecido a opção de utilizar variáveis assim como condicionais e loops. Embora compreende-los não seja tarefa fácil são funções que agregam e abrangem bastante a automação.

Vault

  • Caso seja necessário manejar variáveis sensíveis o Ansible permite a encriptação via Vault. Não é algo muito abrangente porém já ajuda bastante para atividades básicas.

Role Directory Structure

  • Vou deixar um link nesse artigo para uma parte da documentação que fala sobre a estrutura de pastas recomendada para o Ansible. Ela vai facilitar a visualização e também futuras alterações na automação já que seguira um padrão.

Ansible é uma ferramenta muito poderosa que quando usada de maneira certa e inteligente pode agregar muito a quaisquer trabalhos que precisem ser automatizados.

Bibliografia

Documentação do Ansible

O que é o Ansible

Role Directory Structure

--

--

Rafael Monteiro
Semantix
Writer for

Aspiring Computer Scientist, currently working as DevOps Cloud Engineer.