Ansible no Linux: Automatizar Configuração de Servidores sem Agente
Ansible é uma ferramenta de automação de configuração open source que permite gerenciar servidores Linux remotamente sem precisar instalar nenhum agente nos hosts. Ela usa SSH para se comunicar e YAML para descrever o estado desejado da infraestrutura.
Por que usar Ansible?
- Sem agente: usa SSH, que você já tem configurado
- YAML legível: qualquer pessoa entende o que o playbook faz
- Idempotente: roda o mesmo playbook 10 vezes, o resultado é sempre o mesmo
- Escala: 1 comando para configurar 1 ou 1000 servidores simultaneamente
Instalação
# Ubuntu/Debian
sudo apt update && sudo apt install ansible -y
# Verificar versão
ansible --version
Configurando o Inventário
O inventário é o arquivo que lista os servidores que o Ansible vai gerenciar. Por padrão fica em /etc/ansible/hosts, mas você pode criar um arquivo local:
# ./hosts
[webservers]
192.168.1.10
192.168.1.11
[dbservers]
db1.exemplo.com
db2.exemplo.com
[todos:children]
webservers
dbservers
Comandos Ad-Hoc
Antes de escrever um playbook, você pode rodar comandos avulsos em todos os hosts:
# Testa conectividade com todos os hosts
ansible all -i hosts -m ping
# Verifica o uptime de todos os webservers
ansible webservers -i hosts -m command -a "uptime"
# Instala nginx em todos os webservers (com sudo)
ansible webservers -i hosts -m apt -a "name=nginx state=present" -b
O parâmetro -b (become) executa com sudo. O parâmetro -i hosts aponta para o arquivo de inventário.
Primeiro Playbook
Um playbook descreve o estado desejado dos seus servidores em YAML:
# instalar-nginx.yml
---
- name: Instalar e iniciar nginx
hosts: webservers
become: yes
tasks:
- name: Atualizar cache apt
apt:
update_cache: yes
- name: Instalar nginx
apt:
name: nginx
state: present
- name: Garantir que nginx está rodando e sobe no boot
service:
name: nginx
state: started
enabled: yes
# Rodar o playbook
ansible-playbook -i hosts instalar-nginx.yml
# Dry run: mostra o que faria sem aplicar
ansible-playbook -i hosts instalar-nginx.yml --check
Módulos Mais Usados
apt/yum— instalação e remoção de pacotesservice— start, stop, enable de serviçoscopy/template— copiar arquivos e templates Jinja2 para hostsuser— criar e remover usuários do sistemafile— criar diretórios e definir permissõescommand/shell— executar comandos arbitráriosgit— clonar e atualizar repositórios
Variáveis e Templates
# group_vars/webservers.yml
app_port: 8080
app_name: minha-api
- name: Criar arquivo de configuração
template:
src: templates/app.conf.j2
dest: /etc/app/app.conf
owner: www-data
mode: '0644'
Templates usam a sintaxe Jinja2: {{ app_port }}, {% if condicao %}, etc.
Organizando com Roles
Para projetos maiores, a prática é organizar os playbooks em roles:
ansible-galaxy init nginx-role
Isso cria a estrutura padrão: tasks/, handlers/, templates/, vars/, defaults/. Cada role é reutilizável entre projetos.
Ansible no Mercado
Ansible está entre as 5 ferramentas mais pedidas em vagas de DevOps e SRE. Dominar playbooks básicos já diferencia um sysadmin de um candidato que só gerencia servidores manualmente.
Para certificação: a Red Hat oferece o RHCE (Red Hat Certified Engineer), que desde a versão 8 é 100% baseado em Ansible — provar que você sabe automatizar com ele vale mais do que nunca.