Gerador de tarefa Ansible
Gera uma tarefa YAML Ansible com módulos comuns (apt, copy, template, service, file) e variáveis. Pronto para playbook.
Tasks Ansible a fundo: configuração agentless, módulos, idempotência e padrões de playbook
Ansible é uma engine open-source de automação para gerenciamento de configuração e orquestração. Michael DeHaan lançou em 2012; a Red Hat comprou em 2015. O grande diferencial é ser agentless: conecta nos hosts gerenciados via SSH (ou WinRM no Windows) e executa snippets Python (ou PowerShell) ad-hoc — sem daemon para instalar ou manter rodando. A DSL é YAML puro, o modelo de execução é push (o control node dirige os alvos) e todo módulo bem escrito é idempotente (rodar duas vezes produz o mesmo resultado).
O vocabulário: um playbook é uma lista ordenada de plays; cada play mapeia um grupo de hosts (do inventory) numa sequência de tasks; cada task invoca um module. Peças opcionais: handlers (acionados em mudança), roles (pacotes reutilizáveis de tasks/handlers/templates/vars), collections (unidade moderna de empacotamento, ex: community.general, kubernetes.core).
Sintaxe da task
- name: Instalar e iniciar nginx
hosts: web
become: true
tasks:
- name: Instalar nginx
ansible.builtin.apt:
name: nginx
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Subir config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
mode: "0644"
notify: Reiniciar nginx
handlers:
- name: Reiniciar nginx
ansible.builtin.service:
name: nginx
state: restarted
O nome totalmente qualificado do módulo (ansible.builtin.apt em vez de só apt) é o estilo moderno — fixa de qual collection vem o módulo e evita surpresas após upgrades.
Módulos do dia a dia
apt,yum,dnf,package— instalar pacotes.file,copy,template— gerenciar arquivos (template usa Jinja2 para renderizar variáveis).service,systemd— start/stop/enable serviços.user,group,authorized_key— usuários e chaves SSH.git,unarchive— baixar código e extrair archives.lineinfile,blockinfile— edições cirúrgicas em arquivos existentes (use com parcimônia; prefiratemplate).commandvsshell—shellpassa por/bin/sh(pipes, redirects);commandnão. Nenhum é idempotente por padrão — limite comcreates:/removes:ouchanged_when:.
Variáveis, templates e segredos
Variáveis podem ser definidas inline, em vars/, em arquivos por host (host_vars/) ou por grupo (group_vars/), na linha de comando (--extra-vars) ou puxadas de inventory plugins. Templates usam Jinja2 ({{ var | filter }}, condicionais, loops). Para segredos use o Ansible Vault (ansible-vault encrypt) — YAML criptografado que dá para comitar com segurança, descriptografado em runtime com senha ou um provider de vault-id.
Loops, condicionais, tags e check mode
loop:— palavra-chave moderna de loop (substitui o antigowith_items).when:— roda a task só se a expressão for verdadeira (when: ansible_os_family == "RedHat").tags:— rotula tasks para que--tags deployrode só esse subconjunto.--check— dry run;--diffmostra o que mudaria.gather_facts: false— pula a coleta inicial de facts quando não precisa (é lenta).
Boas práticas
- Sempre coloque
name:em cada task — o output vira documentação. - Use nomes totalmente qualificados (
ansible.builtin.copy) e fixe collections emrequirements.yml. - Prefira idempotência via módulo a
command/shell; se precisar dar shell, configurechanged_when. - Criptografe segredos com Vault — nunca comite senhas em texto plano.
- Empacote qualquer coisa reusada como role; compartilhe via Ansible Galaxy ou registry privado.
- Teste com Molecule + Docker antes de mandar para hosts de prod.
- Rode
ansible-lintno CI.
FAQ
Ansible funciona no Windows? Sim, via WinRM (ou SSH no Windows Server 2019+). Há módulos dedicados (win_package, win_feature, win_service). O control node em si precisa rodar em Linux/macOS — Windows só é suportado como alvo.
Ansible gerencia Kubernetes? Sim, via collection kubernetes.core (módulos k8s, helm, k8s_info). Faz sentido quando Kubernetes é uma peça de um provisionamento maior junto com servidores e equipamentos de rede.
Configuration management ou orquestração? Os dois. Plays podem ser sequenciais (orquestrar deploy multi-tier em DB, app, load balancer) ou paralelos (aplicar mesma config a uma frota). A palavra serial: controla quantos hosts rodam em paralelo num rolling deploy.
Ansible vs Puppet vs Chef vs Salt? Ansible é push + agentless (SSH). Puppet e Chef são pull + agent (daemon nos nós). Salt usa ZeroMQ master-minion (rápido em larga escala, mais setup). Ansible ganha em adoção rápida e frota pequena; Salt ganha em frota gigante que precisa de eventos de baixa latência.
O que é AWX / Tower / AAP? A UI web e API em volta do Ansible: agendamento de jobs, RBAC, vault de credenciais, surveys, audit log. AWX é o upstream open-source; Ansible Automation Platform é a oferta comercial da Red Hat com suporte.
Ferramentas Relacionadas
Gerador de Helm values.yaml
Gera um values.yaml mínimo para Helm com replicaCount, image, service e resources. Ponto de partida para charts.
Gerador Monograma SVG
Crie monogramas de iniciais em SVG com fontes serif e script, layouts entrelaçados ou empilhados, e moldura circular ou heráldica.
Gerador de Git post-merge hook
Gera um script post-merge para reinstalar deps quando package-lock muda, atualizar submodules e mostrar comandos novos.