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 Manuscrito
Converte texto digitado em uma imagem com aparência de letra manuscrita. Útil para tornar trabalhos digitais mais pessoais.
Gerador de Currículo
Preenche um currículo simples (CV) imprimível em A4 a partir de formulário com dados pessoais, formação e experiência.
Gerador de Favicon
Gera favicon a partir de texto/emoji em todos os tamanhos comuns (16, 32, 48, 64, 192, 512). Download como PNG.