O que é Terraform e por que ele é demais

Publicados: 2024-03-12

O gerenciamento de configuração é a parte essencial da metodologia DevOps e ferramentas como Ansible, Chef, Puppet, Terraform ou SaltStack estão no centro dos ecossistemas de desenvolvimento de software.
terraformar

Terraform é o exemplo da próxima geração de sistemas de orquestração de configuração trazendo uma nova camada de recursos e funcionalidades para a mesa. Vamos dar uma olhada no que é o Terraform e por que ele é incrível.

Terraform é a ferramenta de orquestração de configuração que funciona com qualquer nuvem, seja ela privada no local ou sistema público, e permite design, gerenciamento e melhoria seguros e convenientes para infraestrutura como código. Como parte da pilha Hashicorp, incluindo também Vagrant, Packer, Consul, Vault e Nomad, o Terraform ajuda a provisionar qualquer aplicativo escrito em qualquer linguagem para qualquer infraestrutura.

Aqui estão os benefícios de usar Terraform em vez de Ansible, Chef, Puppet ou SaltStack:

  • Orquestração, não apenas configuração
  • Infraestrutura imutável
  • Código declarativo, não processual
  • Arquitetura somente cliente

A seguir explicaremos com mais detalhes por que isso é tão importante.

Terraform, a ferramenta de orquestração de servidores

Todas as ferramentas mencionadas foram criadas para configuração de servidores, ou seja, seu objetivo principal é instalar e gerenciar software nos servidores já existentes. O Terraform se concentra mais no provisionamento de servidores, com a implantação de contêineres de software deixada para Docker ou Packer. Quando toda a infraestrutura da nuvem é tratada como código e todos os parâmetros são combinados em arquivos de configuração declarativos, todos os membros da equipe podem colaborar facilmente neles, como fariam em qualquer outro código.

Os serviços de consultoria Terraform podem melhorar muito a eficiência do provisionamento de servidores e do gerenciamento de infraestrutura, garantindo integração perfeita com ferramentas existentes, como Docker ou Packer, para implantação de contêineres de software. Ao aproveitar o Terraform em conjunto com consultoria especializada, as equipes podem agilizar o gerenciamento da infraestrutura em nuvem tratando-a como código, permitindo uma colaboração mais tranquila e uma utilização otimizada de recursos.

Infraestrutura imutável

Com Chef, Salt, Puppet ou Ansible, qualquer atualização de software deve ser executada imediatamente. Dito isto, cada servidor desenvolve um registro único de atualizações ao longo de seu ciclo de vida. Muitas vezes, isso pode levar ao chamado desvio de configuração, quando as diferenças nessas configurações levam a bugs, que podem ser usados ​​como explorações e violações de segurança. O Terraform resolve o problema utilizando uma abordagem de infraestrutura imutável , onde cada nova atualização de qualquer parâmetro cria um instantâneo de configuração separado, o que significa a implantação de um novo servidor e o desprovisionamento do antigo, caso seja necessário. Dessa forma, a atualização do ambiente de desenvolvimento ocorre de maneira tranquila, fácil e totalmente à prova de erros, enquanto retornar a uma das configurações anteriores é tão simples quanto escolher o instantâneo de configuração e provisionar um novo ambiente de acordo com ele.

Estilo de código declarativo

Enquanto Chef ou Ansible forçam você a escrever instruções procedimentais passo a passo para atingir o estado desejado, Terraform, Salt ou Puppet preferem descrever o estado final desejado do sistema, e a própria ferramenta trata de atingir os objetivos definidos. Por que é melhor? Porque um número bastante limitado de modelos pode satisfazer todas as necessidades de gerenciamento de configuração, e os primitivos incluídos permitem a construção de código complexo, mas limpo e modular. Com o código processual, você precisa pensar em todos os eventos e processos recentes que ocorreram para escrever instruções claras. Com o Terraform você simplesmente ordena que a ferramenta faça algo com o estado atualmente ativo do sistema, é por isso que a base de código permanece bastante pequena e facilmente compreensível.

Arquitetura somente cliente

O Terraform aproveita a API do provedor de nuvem para provisionar a infraestrutura, o que elimina a necessidade de verificações de segurança adicionais, executando um servidor de gerenciamento de configuração separado e vários agentes de software. O Ansible faz isso conectando-se por meio de SSH, mas os recursos são bastante limitados. Por funcionar via APIs, o Terraform apresenta uma variedade literalmente infinita de ações. Isso é muito melhor em termos de segurança, facilidade de manutenção e facilidade geral de uso.

Desvantagens do Terraform

Por ser uma ferramenta relativamente nova, o Terraform ainda está longe de ser perfeito. Por exemplo, uma vez o provedor corrigiu um bug no provedor de ignição Terraform e removeu os recuos do JSON, o que forçou a recriação de todas as infraestruturas configuradas anteriormente.

Outra coisa importante a ser observada é que deve haver um único kapellmeister ao usar esta ferramenta de orquestração, pois conduzir as mesmas ações em terminais diferentes com versões diferentes do Terraform pode levar a um resultado imprevisível. Surgem problemas óbvios com colaboração e governação e, até agora, ainda não foram resolvidos. Isso limita praticamente o número de engenheiros de DevOps trabalhando com uma base de código a um (ou a um único terminal trabalhando em turnos).

A terceira falha do Terraform é que ele foi desenvolvido com a implantação somente na nuvem em mente, enquanto seus equivalentes como Salt, Ansible, Puppet funcionam perfeitamente com servidores bare metal, devido a terem sido desenvolvidos há mais de 5 anos, sem abordagem somente na nuvem em mente. Isso torna a ferramenta de orquestração de configuração do Terraform realmente específica para um nicho e não uma solução única para todos.

Temos certeza, porém, de que nos próximos anos todos os bugs serão corrigidos e todos os problemas serão resolvidos, reforçando ainda mais os benefícios indiscutíveis do Terraform.

Benefícios do Terraform

Além das vantagens mencionadas acima, há dois benefícios principais do Terraform que você deve ter em mente:

  • Superportabilidade – você tem uma ferramenta e uma linguagem para descrever a infraestrutura para nuvem Google, AWS, OpenStack e QUALQUER outra nuvem. Mudar de provedor não é mais uma dor de cabeça.
  • Facilidade de implantação full-stack – você pode ter instâncias da Amazon executando contêineres Kubernetes com suas cargas de trabalho e gerenciar todo o sistema a partir de uma ferramenta.

Consideramos o Terraform uma das melhores ferramentas de orquestração de configuração disponíveis atualmente. Pode ainda não ser tão popular quanto as outras ferramentas, mas acreditamos firmemente que causará grande impulso nos próximos anos. Acreditamos que os criadores do Vagrant e do Consul mostraram mais uma vez sua experiência e entregaram um ótimo produto.

Conclusões

Sendo de código aberto, o Terraform reuniu uma comunidade forte e apaixonada de desenvolvedores que impulsionam sua evolução cada vez mais. Acreditamos que esta ferramenta é incrível e se tornará cada vez melhor e muito mais popular com o tempo. Não será a queda do Chef, Ansible ou Puppet, simplesmente ocupará o seu devido lugar no kit de ferramentas DevOps.