Automação com Ansible
Aula 7 de 7
Conceitos
Ansible é uma ferramenta de automação agentless (via SSH). Usa YAML para definir estados desejados.
# Instalação (control node)
pip install ansible
# ou
sudo apt install ansible
# Verificar
ansible --version
Inventory
# /etc/ansible/hosts ou inventário:
[webservers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11
[databases]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21
[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=~/.ssh/id_ed25519
Ad-Hoc Commands
ansible all -m ping # testar conectividade
ansible webservers -m shell -a "uptime" # comando remoto
ansible all -m apt -a "name=nginx state=latest" # gerenciar pacotes
ansible all -m copy -a "src=file dest=/tmp/"
ansible all -m service -a "name=nginx state=started enabled=yes"
Playbooks
---
- name: Configurar servidor web
hosts: webservers
become: yes
vars:
nginx_port: 8080
app_user: deploy
tasks:
- name: Atualizar cache apt
apt:
update_cache: yes
- name: Instalar nginx
apt:
name: nginx
state: latest
- name: Copiar configuração
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginx
- name: Iniciar e habilitar nginx
service:
name: nginx
state: started
enabled: yes
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
Roles
# Estrutura de diretórios
roles/
nginx/
tasks/main.yml
handlers/main.yml
templates/nginx.conf.j2
vars/main.yml
defaults/main.yml
meta/main.yml
# Playbook usando role
- hosts: webservers
roles:
- nginx
vars:
nginx_port: 8080
Templates (Jinja2)
{# templates/nginx.conf.j2 #}
server {
listen {{ nginx_port }};
server_name {{ inventory_hostname }};
location / {
proxy_pass http://localhost:{{ app_port }};
}
}
Ansible Vault — Segredos
ansible-vault create secrets.yml # criar arquivo criptografado
ansible-vault edit secrets.yml # editar
ansible-vault decrypt secrets.yml # descriptografar
# Usar no playbook
ansible-playbook playbook.yml --ask-vault-pass
Ansible transforma administração manual em código. Idempotente, versionável e reutilizável. Essencial para infraestrutura como código.