Visão geral
O Red Hat® Ansible® Automation Platform e a HashiCorp Terraform são soluções de automação com raízes open source que adotam uma abordagem de infraestrutura como código (IaC) para automatizar ambientes de TI.
Decidir qual dessas soluções é a melhor para sua organização não é tarefa fácil. Isso acontece porque não há uma maneira "correta" de automatizar ou uma ferramenta certa para esse processo, assim como não há apenas uma maneira de resolver um problema. O que sua empresa precisa é completamente diferente dos requisitos de outra organização do mesmo setor.
Termos de automação que você precisa conhecer
Ao pesquisar soluções de automação, sem dúvida você já deve ter visto muitos termos usados para descrever as principais diferenças e funcionalidades dos produtos. Vamos definir algumas das mais comuns e explorar como elas se relacionam entre si, bem como com o Ansible e o Terraform.
Orquestração é a execução coordenada de vários fluxos de trabalho. Cada fluxo de trabalho executa uma ou mais tarefas. Orquestrados em conjunto, esses fluxos de trabalho automatizam a configuração e o gerenciamento de sistemas, aplicações e serviços complexos. Essa coordenação geralmente segue regras pré-estabelecidas definidas em uma política. A orquestração também pode coordenar várias soluções de automação. Elas, por sua vez, executam os fluxos de trabalho de automação.
Tanto o Ansible quanto o Terraform podem atuar como orquestradores, pois podem invocar vários fluxos de trabalho de automação em sequência, de acordo com políticas específicas. O Ansible tem módulos integrados para se conectar a outras ferramentas de automação (incluindo o Terraform) e gerenciá-las. Dessa forma, é possível padronizar sua abordagem de automação em todo o seu estado de TI usando o Ansible como a linguagem comum de nível superior para todas as equipes.
Provisionamento é o processo de criar e implantar infraestrutura de TI para aplicações e serviços.
Tanto o Ansible quanto o Terraform podem provisionar (e desprovisionar) a infraestrutura de TI. O Ansible também pode provisionar apps e serviços.
Gerenciamento de configuração é o processo de definir e manter a configuração de infraestrutura, aplicações e serviços.
Como muitas outras soluções de automação, o Ansible e o Terraform podem definir configurações e aplicá-las a vários destinos de infraestrutura. No entanto, a abordagem deles ao gerenciamento de configuração é diferente. O Terraform usa uma abordagem chamada programação declarativa, que tenta preservar a configuração de uma infraestrutura de TI definindo um estado desejado. O Ansible usa uma abordagem de programação procedimental (ou crucial), que tenta preservar a configuração de uma infraestrutura de TI definindo as etapas para alcançar um estado desejado. Cada processo é detalhado a seguir.
Uma abordagem de Infraestrutura como código (IaC) define e provisiona a infraestrutura por meio de um código que será executado automaticamente, em vez de utilizar processos manuais. Ao tratar uma infraestrutura de TI como código, as organizações podem automatizar tarefas de gerenciamento, aproveitando as práticas recomendadas de desenvolvimento de software e reduzindo o erro humano.
Tanto o Ansible quanto o Terraform são ferramentas de IaC. No entanto, como mencionado, a programação usada por cada solução é diferente.
A programação declarativa é um método de escrever códigos para descrever o resultado desejado do programa, em vez de detalhar como fazê-lo. O foco é o estado final, e não comandos e etapas específicos necessários para chegar lá.
O Terraform usa a linguagem de configuração HashiCorp (HCL) como linguagem de automação e uma abordagem de programação declarativa. Isso significa que a sequência de comandos que o Terraform precisa executar para realizar as alterações de configuração necessárias não é visível nem conhecida pelo usuário final.
A programação procedimental, ou imperativa, é um método de escrever códigos para oferecer ao computador uma lista de instruções (um guia detalhado) para a conclusão de uma tarefa. O foco é o processo, e não o estado final. Para sua linguagem de automação, o Ansible usa YAML, uma linguagem de serialização de dados legível por humanos. A sintaxe YAML é interpretada e executada de maneira processual, o que significa que o fluxo de trabalho de automação é executado na sequência em que foi gravado.
O Ansible pode ser tanto declarativo quanto processual. Muitos módulos funcionam de maneira declarativa, enquanto outros preferem uma abordagem de programação processual. Além disso, algumas construções na linguagem do Ansible, como condicionais e loops, permitem que os usuários definam uma lógica processual. Essa combinação oferece a flexibilidade para se concentrar no que você precisa fazer, em vez de aderir rigidamente a um paradigma.
Imutabilidade da configuração significa que a configuração (de uma infraestrutura ou aplicação) não pode ser alterada. Por exemplo, o provisionamento da versão mais recente de uma app exige que a versão anterior seja eliminada e substituída, em vez de modificada e atualizada. Os recursos são destruídos e recriados automaticamente.
O Terraform usa uma abordagem de infraestrutura imutável. Com ela, os usuários podem dar os primeiros passos rapidamente, já que eles podem criar, testar e descontinuar recursos com facilidade. No entanto, dependendo do tamanho da infraestrutura, ela pode se tornar complexa e difícil de gerenciar. Embora o Ansible tenha sido projetado pensando na mutabilidade de configuração, alguns fluxos de trabalho de automação podem ser projetados para adotar a abordagem de imutabilidade.
Mutabilidade da configuração significa que a configuração (de uma infraestrutura ou aplicação) pode ser alterada. Por exemplo, é possível provisionar versões mais recentes de aplicações com a atualização ou modificação do recurso existente, em vez de eliminá-lo ou substituí-lo.
O Ansible foi projetado para incluir mutabilidade de configuração. A vantagem dessa abordagem é que os fluxos de trabalho de automação são simples de entender e fáceis de solucionar. No entanto, em determinados cenários, pode ser desafiador desprovisionar recursos sem saber a ordem correta das operações.
O desvio de configuração ocorre quando há mudanças em uma infraestrutura devido a alterações manuais, não aprovadas ou não monitoradas ao longo do tempo. Essas alterações não são registradas ou rastreadas sistematicamente. Muitas vezes, essas mudanças se devem a emergências ou complexidade excessiva, fatores que podem desencorajar os funcionários a seguir o processo estabelecido. Como consequência, os desvios de configuração são frequentes em grandes organizações.
Uma abordagem de IaC ajuda com o desvio, mas seu gerenciamento adicional é crítico. O Ansible ajuda você a combater desvios com os playbooks do Ansible (fluxos de trabalho de automação), que podem ser configurados para detectá-los. Quando um desvio é detectado, ele envia uma notificação para a pessoa adequada, que pode fazer a modificação necessária e retornar o sistema à linha de base.
Como o Ansible usa uma abordagem de programação processual, os desenvolvedores conseguem entender mais facilmente quando e onde sua configuração de automação está sendo alterada, agilizando o isolamento de uma parte específica dela e a correção do desvio. Dependendo da complexidade da infraestrutura de TI, a realização de alterações de configuração em soluções de automação que usam uma abordagem de programação declarativa (como o Terraform) pode ser muito mais desafiadora. Por isso, às vezes, as organizações de TI preferem usar o Ansible para realizar alterações simples na configuração em vez de reconfigurar holisticamente um sistema de TI inteiro com uma solução como o Terraform.
Recursos da Red Hat
Qual é a melhor solução de automação?
Talvez a pergunta mais apropriada seja: "Do que sua empresa precisa para seu caso de uso específico?" Você deverá avaliar os desafios e requisitos específicos da sua empresa e escolher a solução (ou soluções) que funciona melhor. Alguns problemas são mais adequados para uma abordagem, enquanto outros podem ser mais bem resolvidos com outra. E, às vezes, uma combinação de soluções é a chave para o sucesso.
Embora o Terraform e o Ansible Automation Platform sejam as ofertas de automação e ferramentas de DevOps favoritas, elas têm recursos muito diferentes. O Terraform é especializado no provisionamento de infraestrutura de nuvem pública, sendo um dos muitos casos de uso no mundo da automação de TI, e o Ansible Automation Platform abrange uma ampla gama de casos de uso de automação. Em vez de uma única abordagem de automação, o Ansible Automation Platform oferece várias abordagens para solucionar vários problemas. E se os clientes encontrarem um problema específico que seja melhor resolvido com a combinação de duas soluções de automação, o Ansible Automation Platform pode integrar-se a outras soluções dos principais provedores de nuvem, incluindo a Amazon Web Services (AWS) CloudFormation, o Microsoft Azure Resource Manager e o Google Cloud Platform (GCP) Cloud Deployment Manager, assim como o Helm e o Terraform.
Muitos de nossos clientes usam várias soluções de automação ao mesmo tempo. Quando eles implantam aplicativos na nuvem, por exemplo, eles começam geralmente a provisionar a infraestrutura de nuvem com o CloudFormation ou o Terraform e, depois, executam a configuração contínua de aplicações e processos com o Ansible Automation Platform. Para aumentar a eficiência desse processo, lançamos recentemente o Red Hat Ansible Certified Content Collection for Terraform. Com essa coleção da Red Hat, você automatiza o gerenciamento e o provisionamento da IaC usando o Terraform em um ambiente de execução do Ansible Automation Platform.
Outros clientes investem exclusivamente no Ansible Automation Platform porque desejam automatizar mais do que apenas o caso de uso de implantação na nuvem. Por exemplo, eles podem querer automatizar processos de segurança, como investigação de ameaças ou resposta a incidentes, juntamente com processos de rede, como reconfiguração de roteadores e switches.
Esses clientes querem padronizar a abordagem de automação em todos os casos de uso para maximizar o retorno do investimento.
Terraform Ansible: É realmente uma competição?
Com a variedade de ofertas de automação empresarial disponíveis, é crucial entender as funcionalidades e, acima de tudo, o que funciona melhor para as necessidades específicas da sua organização.
Tendo o open source como fundamento, o Red Hat Ansible Automation Platform é uma solução empresarial por subscrição testada e reforçada, com suporte por todo seu ciclo de vida. A base dele é a comunidade Ansible, que se beneficia da experiência e inteligência de seus milhares de colaboradores no mundo todo. O Ansible Automation Platform foi projetado para ajudar 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 soluções de automação de ponta a ponta, incluindo automação de nuvem híbrida, locais de edge, redes, segurança, infraestrutura e muitos outros casos de uso.
O Terraform se destaca como uma ferramenta de provisionamento e desprovisionamento de infraestrutura de nuvem com uma abordagem de IaC. É uma ferramenta específica com uma finalidade específica. O Ansible oferece uma solução de automação multifuncional para vários domínios. Ambas têm comunidades open source ativas e produtos comerciais downstream com bom suporte. Ambas as soluções têm seus pontos fortes individuais. Quando combinadas, elas funcionam bem e geram eficiência para muitas empresas. Simplificando, nem sempre precisamos optar por uma solução de automação, muitas vezes podemos ficar com mais de uma.
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.