Visão geral
O Ansible e o Hashicorp Terraform são duas ferramentas open source que adotam a infraestrutura como código (IaC) para automatizar a TI. Ambas as ferramentas são essenciais para gerenciar a infraestrutura, mas elas têm papéis diferentes no ciclo de vida da automação.
O Terraform é uma ferramenta de IaC dedicada feita para desenvolver, alterar e gerenciar a infraestrutura de forma segura e repetível. O Ansible é um mecanismo multifuncional de automação da TI, projetado para configurar sistemas, implantar software e orquestrar tarefas complexas em servidores, dispositivos de rede, ferramentas de segurança e ambientes híbridos. As estratégias de automação mais eficazes usam o Terraform e o Ansible juntos para um gerenciamento abrangente do ciclo de vida .
Grandes empresas muitas vezes migram do Ansible open source principal para o Red Hat® Ansible Automation Platform com o objetivo de gerenciar e escalar suas iniciativas de automação. O Ansible Automation Platform conta com funcionalidades como governança centralizada, automation analytics e suporte oficial. Quando as equipes entendem o papel do Terraform no provisionamento da infraestrutura, do Ansible na configuração e do Ansible Automation Platform na escala da automação, conseguem definir uma estratégia de automação de ponta a ponta.
O que é infraestrutura como código (IaC)?
O provisionamento de novos ambientes de TI costumava ser demorado, caro e manual. À medida que a virtualização, os containers e a computação em nuvem passaram a exigir mudanças cada vez mais frequentes na infraestrutura, depender de processos manuais se tornou inviável.
Foi aí que a IaC entrou em cena.
A IaC é o processo de gerenciar e provisionar a infraestrutura de TI por meio de códigos legíveis por máquina, em vez da manipulação de hardware e configuração manual.
A adoção de IaC transforma significativamente a relação entre as equipes de desenvolvimento e de operações. Em vez de gerenciar a partir de um console na nuvem ou depender de scripts ad hoc, você cria arquivos de configuração com especificações completas. Assim, você provisiona o mesmo ambiente consistentemente, seja na implantação em ambientes de desenvolvimento, teste ou produção. Ao definir e documentar sua infraestrutura em arquivos que podem ser editados, distribuídos e versionados, a IaC ajuda a eliminar erros, acelerar implantações e evitar alterações não documentadas que levem ao desvio de configuração.
A IaC é a base do DevOps e das estratégias de nuvem modernas. Como essa metodologia define a infraestrutura por meio do código executado automaticamente, você precisa de ferramentas especializadas para transformar esses arquivos em uma infraestrutura funcional. O Ansible, o Red Hat Ansible Automation Platform e o Terraform ajudam a acelerar e extrair mais valor da IaC: O Terraform é especializado na criação da infraestrutura, e o Ansible na configuração dela.
Acesse a biblioteca de conteúdos da Red Hat
O que o Ansible e o Terraform têm em comum?
Apesar de atuarem em partes diferentes do ciclo de vida da automação, o Terraform e o Ansible têm semelhanças que determinam seu sucesso.
Design sem agentes
O Ansible e o Terraform compartilham uma arquitetura simplificada e moderna que é mais fácil de executar do que sistemas de automação anteriores. Como são sem agente, não é necessário instalar nenhum software adicional nem agentes persistentes nos servidores ou nos recursos que gerenciam, o que simplifica a configuração. O Terraform se comunica principalmente por interfaces de programação de aplicações (APIs) do provedor de nuvem, já o Ansible executa tarefas com protocolos padrão como SSH (Secure Shell) e APIs para se comunicar com nós gerenciados.
Ecossistema open source da comunidade
O Ansible e o Terraform são projetos open source consolidados, com uma comunidade ampla e engajada. Esse ecossistema da comunidade oferece amplas bibliotecas de conteúdo pronto para uso. Com milhares de provedores, o Terraform pode se comunicar com praticamente qualquer nuvem pública e plataforma. Da mesma forma, o Ansible oferece módulos e playbooks para praticamente qualquer tarefa de configuração. Isso ajuda as equipes que utilizam essas ferramentas a encontrar rapidamente soluções e suporte da comunidade.
Filosofias da automação complementares
Por fim, ambas as ferramentas têm o objetivo em comum de automatizar a infraestrutura. Cada uma tem sua especialidade, mas elas compartilham algumas funcionalidades. Por exemplo, o Ansible pode fazer o provisionamento, e o Terraform executar scripts de configuração básica. Ambos trabalham com o mesmo objetivo: transformar processos manuais de TI suscetíveis a erros em código consistente e repetível. Esse propósito em comum, permite combinar o Ansible e o Terraform para automatizar todo o ciclo de vida.
Automatize as implantações de aplicação, otimize a infraestrutura e viabilize atualizações e solução de problemas contínuas com o Ansible e o Terraform. Duração do vídeo: 2:46.
Quais as diferenças entre o Ansible e o Terraform?
Ambas as ferramentas são tipos de IaC, mas foram desenvolvidas de forma diferente para cumprir seu objetivo central. Entender essas diferenças ajuda você a escolher a ferramenta certa para cada tarefa ou a decidir como integrá-las.
Declarativa e processual
A principal diferença está nos comandos de cada ferramenta:
- O Terraform usa a HashiCorp Configuration Language (HCL), uma linguagem de configuração declarativa. Configuração declarativas significa que você define o estado final desejado da infraestrutura. O mecanismo do Terraform automaticamente determina as etapas necessárias para alcançar esse estado, gerenciando todas as dependências por você.
- O Ansible tem uma abordagem de automação procedural (imperativa). Ele usa playbooks escritos em YAML legível por humanos. Na abordagem procedural você define instruções detalhadas para alcançar o estado desejado. Essa abordagem baseada em tarefas permite controlar e simplificar a solução de problemas porque a ordem de execução é clara. No entanto, muitos módulos subjacentes do Ansible também atuam de forma declarativa e aplicam alterações apenas quando o sistema de destino ainda não está no estado de configuração desejado.
Stateful e stateless
Essa diferença afeta como cada ferramenta vê e acompanha a infraestrutura ao longo do tempo:
- O Terraform é stateful. Ele mantém um arquivo de estado que funciona como uma single source of truth, monitorando todos os recursos da infraestrutura que ele provisiona e sua configuração atual. O state file (arquivo de estado em português) é essencial porque permite ao Terraform gerenciar todo o ciclo de vida de um recurso. Dessa forma, ele pode provisionar, escalar ou descontinuar recursos com confiança quando eles não forem mais necessários.
- O Ansible é majoritariamente stateless. Ele não mantém um state file persistente monitorando toda a infraestrutura. Em vez disso, ele se baseia na idempotência, a garantia de que executar a mesma tarefa várias vezes produzirá o mesmo resultado, sem realizar alterações desnecessárias. O Ansible atinge o estado de configuração desejado ao consultar diretamente o sistema de destino antes de aplicar qualquer alteração.
Imutável e mutável
As ferramentas são baseadas em filosofias diferentes para lidar com atualizações da infraestrutura:
- O Terraform prefere a infraestrutura imutável (ou inalterável). Se for necessária uma grande mudança ou atualização, o Terraform prefere remover o recurso e substituí-lo por um novo e configurado corretamente. Essa estratégia reduz o risco de falhas de configuração complexas que podem se acumular com o tempo.
- O Ansible foi desenvolvido para infraestruturas mutáveis, sendo excelente para alterações no local nos sistemas em execução. Isso é necessário para tarefas dos Dias 1 e 2, como aplicação de patches de segurança, execução de atualizações em sistemas operacionais ou ajuste de configurações de firewall em um servidor que não pode ser substituído com facilidade.
Desvio de configuração
O desvio de configuração acontece quando a infraestrutura em produção se desvia do que foi definido no código-fonte. Ambas as ferramentas solucionam isso, mas de formas diferentes:
- O Terraform usa o state file persistente para detectar desvios ativamente. Ele compara a infraestrutura ao state file em execução e sinaliza de imediato qualquer discrepância.
- O Ansible, em geral, resolve o desvio operando continuamente e utilizando tarefas idempotentes para sempre reforçar a configuração desejada. Isso evita que o sistema desvie muito do estado esperado.
Como usar o Ansible e o Terraform juntos
A conclusão mais importante dessa comparação é que é melhor usá-los juntos do que escolher apenas um. As vantagens de cada ferramenta ajudam as empresas a alcançar uma automação de ponta a ponta, desde o provisionamento da infraestrutura à implantação e configuração das aplicações.
Gerenciamento do ciclo de vida
A prática mais aceita é uma alternância sequencial e simples entre as ferramentas. O Terraform faz o provisionamento no Dia 0, criando a infraestrutura de nuvem, com servidores e redes. Depois do provisionamento bem-sucedido, o Ansible faz a configuração no Dia 1, aplicando políticas de segurança, instalando os softwares necessários e implantando código de aplicação nos recursos novos. O Ansible também fica responsável pelas operações do Dia 2, como a aplicação de patches, atualizações e alterações na configuração.
Orquestração com o Ansible
Para fluxos de trabalho complexos, o Ansible Automation Platform serve como um orquestrador central, concluindo a execução do Terraform em um processo de automação mais amplo. A solução pode executar tarefas de pré-provisionamento e acionar uma implantação do Terraform para desenvolver a infraestrutura. Ele também pode executar tarefas de pós-provisionamento, como configuração de aplicações, enquanto se integra a ferramentas de gerenciamento de serviços de TI (ITSM), como o ServiceNow, para fins de rastreamento.
Integrações entre o Terraform e o Ansible Automation Platform
A Red Hat oferece uma coleção certificada do conteúdo do Terraform para o Ansible. Ela inclui módulos que ajudam no gerenciamento e provisionamento da IaC usando o HashiCorp Terraform (HCP Terraform e Terraform Enterprise). A coleção viabiliza recursos de automação semelhantes a outras integrações com ferramentas de provisionamento em nuvem para o Ansible, como o AWS CloudFormation, o Azure Resource Manager e o Helm.
Além disso, a Hashicorp oferece um provedor Terraform para interação com o Ansible. Um provedor Terraform (Terraform provider) é um plugin que inclui recursos e fontes de dados que o Terraform pode gerenciar. Os provedores devem ser declarados na configuração do Terraform para que o Terraform possa instalá-los e utilizá-los. O provedor do Ansible para o Terraform permite que o Terraform gerencie diretamente o inventário do Ansible. Em vez de exigir plugins de inventário individuais para coletar informações sobre a infraestrutura provisionada e passar para o Ansible, o provedor automatiza essa transferência. Os usuários podem definir o uso de um inventário do Ansible diretamente na configuração do Terraform, permitindo que Ansible Playbooks executem tarefas de configuração nos novos hosts imediatamente após a criação.
Por que usar o Red Hat Ansible Automation Platform?
As ferramentas open source (Terraform e Ansible) oferecem uma base para a IaC. No entanto, escalar e gerenciar esses fluxos de trabalho integrados em grandes empresas apresenta desafios de consistência e segurança. O Red Hat Ansible Automation Platform reduz essa complexidade, transformando as soluções de automação da comunidade em uma solução empresarial estratégica. Ele oferece o controle centralizado necessário para gerenciar processos de automação complexos que abrangem o provisionamento do Terraform e a configuração contínua do Ansible.
Tendo o open source como fundamento, o Ansible Automation Platform é uma solução empresarial por subscrição de confiança, com suporte durante todo seu ciclo de vida. Sua base é a comunidade do Ansible, que se beneficia da experiência e inteligência de milhares de colaboradores no mundo todo. O Ansible Automation Platform ajuda as empresas a criar, gerenciar e escalar cargas de trabalho de automação. Ele oferece uma base flexível, estável e com foco na segurança para implantar automação de ponta a ponta, incluindo nuvem híbrida, locais de edge, redes, segurança, infraestrutura e muitos outros casos de uso.
Otimize a CI/CD com o Red Hat Ansible Automation Platform
Descubra como usar o Red Hat Ansible Automation Platform para gerenciar com eficiência ambientes de TI complexos, automatizar as operações de segurança e acelerar as implantações.