Entendendo as ferramentas de DevOps: Ansible e Terraform

Ansible e Terraform – ouviu falar sobre essas ferramentas de DevOps? Este artigo é sobre eles e suas diferenças.

A infraestrutura como código (IaC) é uma parte central do domínio DevOps e é uma habilidade central que os engenheiros de DevOps devem possuir. O IaC é usado para provisionar e gerenciar a infraestrutura de TI usando código de configuração que é arquivos de definição legíveis por máquina. Usando essa abordagem de engenharia de software para operações, você pode automatizar a infraestrutura de TI usando scripts de programação.

Quando um engenheiro de DevOps pensa em automação usando código em DevOps, duas ferramentas de DevOps sempre são destacadas, Terraform e Ansible. Ambas são ferramentas de primeira linha e amplamente utilizadas no domínio DevOps. Mas muitas pessoas são novas nessas ferramentas e não conhecem as principais diferenças entre elas. Neste artigo, discutirei o Terraform, o Ansible e suas principais diferenças.

O que é Terraform?

Terraform é uma infraestrutura de código aberto como uma ferramenta de software de código criada pela HashiCorp. Você pode orquestrar uma infraestrutura de TI completa usando uma linguagem declarativa muito fácil de usar no Terraform. No Terraform, você precisa declarar e configurar os recursos necessários para a infraestrutura. Em seguida, ele cuidará de todas as dependências necessárias e criará a infraestrutura para você.

O Terraform foi lançado há apenas alguns anos, em 2014, mas a taxa de adoção dessa ferramenta tem sido fantástica. Ele oferece excelentes recursos que facilitam a orquestração completa da infraestrutura de TI, pois configurar toda a infraestrutura em uma grande organização é complexo. Você também pode integrar esta ferramenta com todos os provedores de nuvem populares, como AWS, GCP, etc.

A maioria das organizações de TI tem ambientes de trabalho diferentes para equipes diferentes, portanto, as equipes de desenvolvimento, preparação ou controle de qualidade e produção terão seus ambientes separados. Depois de um tempo, não é fácil gerenciar o ambiente de produção. Para facilitar o gerenciamento, as organizações usam o Terraform para codificar tudo no ambiente de produção. Ao usar o terraform, você pode girar os ambientes de desenvolvimento e de teste muito rapidamente, o que será muito semelhante ao ambiente de produção. Isso ajuda no desenvolvimento e teste do aplicativo em uma plataforma semelhante à produção.

  Como jogar Tridle

Muitas grandes organizações, como Starbucks, Slack, Uber, etc., aproveitam muito os recursos do Terraform.

Aqui estão algumas vantagens do Terraform:

  • Gerencia os serviços usando uma GUI simples.
  • Descreve a infraestrutura para GCP, AWS, Azure e outros usando uma linguagem direta (declarativa).
  • Suporta controle de acesso baseado em função (RBAC) para segurança.
  • Ele pode ser provisionado com OpenStack, Azure, AWS, GCP facilmente usando suas APIs
  • Ele segue a arquitetura sem mestre, portanto, não há nó mestre para rastrear todas as atualizações de configuração.
  • As equipes de uma organização podem colaborar facilmente na infraestrutura usando o registro do terraform.
  • A integração com plataformas de integração contínua como GitLab, Jenkins, Travis para implantação de pipelines DevOps é fácil.

O que é Ansible?

Ansible é uma ferramenta de gerenciamento de configuração no domínio DevOps que é usada para automatizar todas as tarefas de TI. O Ansible também é uma ferramenta de código aberto que usa linguagens declarativas e procedurais para gerenciamento de configuração. Essa ferramenta tem excelente suporte de todos os provedores de nuvem populares e automatiza os aplicativos, redes, infraestrutura, segurança, contêineres, etc. Reduz significativamente as complexidades nos processos de DevOps, por isso muitos engenheiros de DevOps preferem usar essa ferramenta.

O Ansible automatiza a infraestrutura mais complexa com facilidade usando arquivos de configuração YAML simples (legíveis por humanos). Ele usa um arquivo de código escrito em YAML para realizar o gerenciamento de configuração; esse arquivo de código é chamado Ansible Playbook. O Ansible não tem agente e possui um mestre que envia todas as configurações necessárias para gerenciar e atualizar os aplicativos nos servidores remotos.

No Ansible, você precisa usar o SSH para se conectar aos nós na infraestrutura de TI. Quando a conexão com o nó é bem-sucedida, o Ansible envia as configurações mais recentes usando os módulos do Ansible para instalar, atualizar ou remover o aplicativo. Você também tem opções para executar comandos ad-hoc no Ansible para executar pequenas tarefas com velocidade.

  Transfira arquivos e configurações de um PC antigo para um novo

Aqui estão algumas vantagens e recursos do Ansible:

  • Como o Ansible não tem agente, você não precisa instalar e executar agentes nos nós para realizar as tarefas.
  • Como o Ansible foi construído em Python, ele tem uma infinidade de bibliotecas para oferecer em Python, e é por isso que é muito amigável ao desenvolvedor.
  • Fornece autenticação segura usando SSH.
  • O Ansible Tower oferece recursos de visualização de nível empresarial.
  • O mestre envia as configurações mais recentes nos servidores remotos para realizar alterações na infraestrutura, portanto, suporta um modelo baseado em push.
  • Ele usa arquivos YAML legíveis para gerenciamento de configuração, portanto, não são necessárias habilidades de codificação adicionais.

Terraform vs. Ansible: diferenças

Orquestração versus gerenciamento de configuração

O Ansible é uma ferramenta de gerenciamento de configuração e o Terraform é uma ferramenta de orquestração. Essa é a diferença mais fundamental entre o Terraform e o Ansible. Embora alguns dos recursos sejam comuns entre essas ferramentas, eles ainda são diferentes entre si.

O Ansible é usado para adicionar, atualizar, excluir e gerenciar a configuração da infraestrutura de TI, enquanto o Terraform é usado para declarar componentes de infraestrutura e orquestrá-los em vários provedores de nuvem.

Processual vs Declarativo

O Terraform usa linguagem de configuração declarativa para declarar os recursos da infraestrutura de TI. O Ansible usa linguagens procedurais e declarativas para gerenciamento de configuração. A forma procedural é usada no Ansible para executar comandos ad-hoc e alcançar a configuração de infraestrutura desejada. Os módulos ansible usam uma abordagem declarativa.

Infraestrutura mutável vs. imutável

Você pode criar uma infraestrutura mutável usando o Ansible e uma infraestrutura imutável usando o Terraform. O Ansible gerencia e configura o software da infraestrutura no mesmo servidor. Quando você envia mais atualizações de configuração, o ambiente de produção se torna complexo e leva a muitos bugs difíceis de identificar e corrigir.

O Terraform usa principalmente uma nova imagem do Docker para qualquer implantação no servidor. O Terraform cria uma nova imagem do docker para atualizar qualquer software na infraestrutura, implanta essa imagem em todos os servidores e remove a imagem do docker de configuração antiga. Assim, mesmo após várias atualizações de configuração, o ambiente permanece estável.

Mestre vs. Sem Mestre

O Ansible possui uma arquitetura de máquina mestre responsável por armazenar o estado completo da infraestrutura e enviar as novas atualizações de configuração nos servidores remotos. É por isso que é chamado de modelo de implantação baseado em push no ansible.

  8 maneiras de ganhar dinheiro como profissional do WordPress

No Terraform, não há um sistema mestre separado. No entanto, quando trabalha com provedores de nuvem como GCP, AWS por meio de APIs, o servidor de API é a máquina mestre nesse caso.

Comunidade

Em comparação, a comunidade do Ansible é mais forte que a do Terraform. Por exemplo, o Ansible tem 45 ramificações, 49,7 mil estrelas, 51.836 confirmações e 21 mil bifurcações no GitHub, enquanto o Terraform tem 183 ramificações, 28,7 mil estrelas, 28.778 confirmações e 6,9 ​​mil bifurcações. Atualmente, a comunidade de ambas as ferramentas está crescendo rapidamente.

Qual escolher, Ansible ou Terraform?

Eu diria que isso não é uma comparação de maçã com maçã. A resposta a esta pergunta depende dos requisitos do negócio. Você pode usar o Ansible para gerenciamento de configuração e adicionar o Terraform para orquestrar a infraestrutura de TI. Se sua organização trabalha com provedores de nuvem, trabalhar com o Terraform seria uma opção melhor. Ambas as ferramentas têm suas limitações e benefícios, e ambas são ferramentas populares no domínio DevOps. Portanto, dependendo da declaração do problema que você está tentando resolver, você pode escolher qualquer uma das ferramentas.

Aqui está uma tabela de comparação que resume as diferenças entre o Ansible e o Terraform.

Critério
Ansible
Terraform
Fundado em
2012
2014
Desenvolvido por
Ansible Inc. / Red Hat Inc.
HashiCorp
Escrito em
Pitão
Vai
Modelo
Ferramenta de gerenciamento de configuração
Ferramenta de orquestração
Linguagem
Usa linguagens procedurais e declarativas
Usa uma linguagem declarativa
A infraestrutura
Suporta infraestrutura mutável
Suporta infraestrutura imutável
Gerenciamento do ciclo de vida
Não
Sim
Empacotamento e modelagem
Totalmente compatível
Parcial
Provisionamento e rede de VM
Parcial
Totalmente compatível

Comunidade e suporte

mais de 49 mil estrelas
28K+ estrelas

Conclusão 👩‍💻

Isso foi tudo sobre Ansible, Terraform e suas diferenças. Ambas as ferramentas de DevOps são muito utilizadas em ambientes de produção e geralmente estão presentes na maioria das organizações maiores. Então, o que você está esperando? Vá em frente e escolha a ferramenta mais adequada para os requisitos de negócios da sua organização. Você pode começar aprendendo qualquer uma das ferramentas, mas conhecer as duas lhe dá uma vantagem na indústria diversificada.

Você pode gostar:

Melhor repositório de hospedagem de pacotes para seus projetos de DevOps.