• EdukTI
  • Posts
  • Terraform: O que é? Por que usar? Como funciona?

Terraform: O que é? Por que usar? Como funciona?

Uma visão geral da ferramenta de infraestrutura como código mais poderosa e utilizada do mercado

A capacidade de provisionar, configurar e gerenciar infraestruturas de maneira eficiente e repetível é um requisito fundamental para empresas que desejam acompanhar o ritmo acelerado das demandas do mercado na era atual da tecnologia.

Aqui, entra o Terraform, uma ferramenta revolucionária que simplifica a criação e o gerenciamento de recursos de infraestrutura de maneira declarativa.

Antes do surgimento do Terraform, muitas organizações enfrentavam o desafio de configurar e provisionar seus recursos de infraestrutura por meio de processos manuais e demorados.

Isso resultava em configurações inconsistentes, falta de controle e dificuldade para escalar rapidamente, gerando vários problemas para os times de engenharia que precisavam lidar com scripts complexos para provisionar recursos de infraestrutura.

A boa notícia é que o Terraform oferece uma solução eficaz para esses problemas. 🎉

Se você já ouviu falar do Terraform, mas não sabe exatamente o que é ou quando usá-lo, este conteúdo é para você.

Neste artigo, vamos explorar os conceitos fundamentais do Terraform para que você possa dar os primeiros passos com essa poderosa ferramenta de infraestrutura como código.

Ao final desta leitura, espero que você se motive a aprender a utilizar o Terraform em seus projetos, aproveitando todos os benefícios que essa ferramenta tem a oferecer.

Tabela de conteúdo

❓O que é o Terraform?

Terraform é uma ferramenta open-source desenvolvida pela HashiCorp que permite descrever sua infraestrutura como código (“Infrastructure as Code” ou IaC) usando uma linguagem de configuração declarativa muito simples e legível chamada Hashicorp Configuration Language ("HCL").

Após escrever a infraestrutura desejada em arquivos de configuração Terraform, você consegue implantar e gerenciar a infraestrutura de forma automatizada e sistemática em diferentes plataformas de nuvem (como a AWS, Google Cloud e Microsoft Azure), datacenters locais (usando VMware) usando simples comandos como terraform plan ou terraform apply .

📈 Porque você deve aprender Terraform?

Vou te apresentar dados que comprovam a minha crença de que essa é a melhor ferramenta de IaC para se dominar no mercado.

Comparação de interesse entre Terraform, CloudFormation, Pulumi e CDK ao longo de 5 anos (via Google Trends)

De acordo com o Google Trends, nos últimos 5 anos, o Terraform é a ferramenta mais pesquisada mundialmente, conforme você pode ver nesse gráfico acima que compara as buscas entre as principais ferramentas de IaC do mercado.

GitHub e StackShare

O repositório do Terraform no GitHub conta com mais com mais de 40 mil estrelas no GitHub.

Na página no StackShare, +13500 desenvolvedores informaram que usam Terraform em mais de 1900 empresas, como Uber, Udemy, Slack e Twitch.

Com base nesses dados e na minha experiência pessoal, eu posso te dar uma recomendação com toda certeza: vale muito a pena aprendar e usar e dominar essa ferramenta!

🤔 Para que serve o Terraform?

Ao invés de você criar recursos clicando em uma interface gráfica (*também conhecido como ClickOps), a ideia por trás de ferramentas de IaC, como o Terraform, é que você possa:

  1. escrever o código para descrever a infraestrutura desejada

  2. criar e gerenciar sua infraestrutura.

Por este motivo, os 5 principais benefícios ao usar o Terraform são:

1️⃣ Provisionamento de infraestrutura

O Terraform é especialmente útil quando você precisa criar e configurar recursos de infraestrutura, como servidores, redes, bancos de dados, balanceadores de carga, entre outros.

Ele simplifica o processo de provisionamento, permitindo que você defina e implante recursos de forma automatizada, reprodutível e escalável, pois sua configuração pode ser facilmente empacotada, compartilhada e reutilizada na forma de módulos.

Você pode automatizar todo o processo de criação e implantação, o que o torna muito mais rápido e confiável do que qualquer processo manual.

2️⃣ Orquestração de recursos em nuvem

O Terraform é uma excelente ferramenta caso você trabalhe com provedores de nuvem, como AWS, Microsoft Azure ou Google Cloud.

Ele oferece suporte a estes e vários outros provedores e, de maneira unificada, permite orquestrar recursos nestas plataformas para que você possa construir cenários complexos de gerenciamento e conformidade entre essas nuvens.

Isso significa que você pode criar e gerenciar recursos em vários ambientes em nuvem usando a mesma abordagem declarativa.

3️⃣ Gestão de infraestrutura em múltiplos ambientes

O Terraform é útil quando você precisa gerenciar a infraestrutura em vários ambientes que fazem parte de um ciclo de vida comum de uma aplicação, como desenvolvimento, teste e produção.

Com o Terraform, é possível criar e manter ambientes consistentes em diferentes estágios de desenvolvimento, facilitando a reprodução e a sincronização das configurações de infraestrutura entre os ambientes.

4️⃣ Automação e orquestração de implantações

O Terraform pode ser usado para automatizar a implantação de infraestrutura e aplicativos.

Ele pode trabalhar em conjunto com outras ferramentas de automação, como scripts de inicialização, sistemas de gerenciamento de configuração ou ferramentas de orquestração de contêineres, para fornecer uma solução completa de automação e implantação.

5️⃣ Gerenciamento de estado de infraestrutura

O Terraform tem recursos integrados de gerenciamento de estado, permitindo que você rastreie e gerencie as alterações feitas na infraestrutura ao longo do tempo.

Você pode representar o estado de sua infraestrutura em arquivos que qualquer pessoa pode ler, facilitando a visualização das alterações, o controle de versão e a colaboração em equipe.

⚙️ Como o Terraform funciona?

Em um alto nível, o Terraform pode ser "dividido" em duas partes principais: Terraform Core e Plugins.

Terraform: Core e Plugins

Terraform Core

O Terraform Core é responsável pelo gerenciamento do ciclo de vida da infraestrutura.

É o binário de código aberto que você baixa e usa na linha de comando.

Ele funciona de maneira simples

  1. Primeiro, leva em consideração o estado atual e o avalia em relação à configuração desejada.

  2. Em seguida, propõe um plano para adicionar ou remover componentes de infraestrutura conforme necessário.

  3. Finalmente, ele cuida do provisionamento ou da desativação de quaisquer recursos se você optar por aplicar o plano.

No próximo tópico, detalharei mais o fluxo de trabalho do Terraform.

Plugins

Os plug-ins do Terraform fornecem um mecanismo para o Terraform Core se comunicar com seu provedor de infraestrutura ou provedores de SaaS.

Os Providers e Provisionadores do Terraform são exemplos de plug-ins.

O Terraform Core se comunica com os plug-ins via chamada de procedimento remoto (RPC).

🔁 Fluxo de Trabalho do Terraform

Fluxo de trabalho do Terraform

O Terraform utiliza uma abordagem baseada em código, onde a infraestrutura desejada é declarada em arquivos de configuração.

O funcionamento do Terraform pode ser resumido em três simples etapas principais:

1️⃣ Definição da Infraestrutura como Código

O usuário descreve a infraestrutura desejada em um arquivo de configuração usando a linguagem de configuração do Terraform, a HCL.

Nesse arquivo, são especificados os recursos que devem ser criados, como servidores, redes, instâncias de banco de dados, entre outros.

O código do Terraform é escrito em um formato declarativo, o que significa que o foco está na descrição do estado final desejado, e não nos passos detalhados para chegar lá.

2️⃣ Inicialização e Revisão do Plano Terraform

Após definir o código de infraestrutura, o próximo passo é inicializar o Terraform.

Durante a inicialização, o Terraform verifica as dependências e baixa os provedores de infraestrutura necessários.

❯ terraform init
Initializing the backend...
Initializing modules...

Initializing provider plugins...
- Reusing previous version of hashicorp/aws from the dependency lock file
- Using previously-installed hashicorp/aws v4.64.0

Terraform has been successfully initialized!

Em seguida, você deve utilizar o comando terraform plan para que o Terraform exiba um plano para determinar quais recursos serão criados, modificados ou removidos com base na comparação de sua infraestrutura atual e nas alterações definidas no código.

❯ terraform plan

...

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

⚠️ O planejamento é uma etapa crucial por permitir que os usuários tenham uma visão prévia das mudanças que serão aplicadas antes de efetivamente fazê-las.

3️⃣ Aplicação das alterações

Após revisar o planejamento, o usuário pode aplicar as alterações definidas no código para que o Terraform crie, modifique ou remova os recursos necessários para atingir o estado desejado.

Durante essa etapa, o Terraform se comunica com os provedores de infraestrutura para efetuar as alterações conforme definido no código.

❯ terraform apply

...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Armazenamento do estado

O fluxo de trabalho mencionado acima funciona bem para um único desenvolvedor, pois o Terraform mantém localmente um estado dos recursos provisionados, permitindo que ele rastreie as mudanças e as gerencie consistentemente.

À medida que mais desenvolvedores se juntam ao time, torna-se importante garantir que todos tenham uma visão correta do estado atual da infraestrutura e que as alterações sejam aplicadas sequencialmente sem sobreposições.

É nesse momento que as soluções Terraform Cloud ou Terraform Enterprise se tornam interessantes: para permitir que equipes trabalhem de maneira colaborativa.

Ambas soluções armazenam o estado remotamente para que todos possam ter uma visão consistente.

O Terraform Cloud está disponível como um serviço hospedado, enquanto o Terraform Enterprise permite que você implante e auto-hospede o Terraform Cloud em sua instância privada.

Basicamente, o fluxo de trabalho ao usar o Terraform Cloud passa a ser:

  1. Os desenvolvedores contribuem com seu código Terraform para um sistema de controle de versão central (por exemplo, GitHub)

  2. O Terraform Cloud usa as versões de código mais recentes do repositório central.

❌ Terraform vs Outras Ferramentas: O que o Terraform não é!

Por acaso, você se fez a seguinte pergunta:

“Devo usar Terraform ou Ansible para criar minha infraestrutura na nuvem?”

Aposto que sim, pois essa é uma pergunta muito comum para quem está começando a se interessar por infraestrutura como código, mas não sabe qual ferramenta utilizar para determinado fim.

Esse é um cenário cada vez mais comum na era DevOps, onde há inúmeras ferramentas que muitas vezes acabam "competindo" umas com as outras em determinadas funções.

Por este motivo, uma das minhas principais recomendações para que você consiga extrair o máximo de valor do Terraform, e de qualquer outra ferramenta DevOps no longo prazo, é que você entenda exatamente o que elas não são.

Ao entender o que cada ferramenta não é destinada a fazer, embora possa fazer, você saberá onde e até quando deve utilizar determinada ferramenta.

No caso do Terraform, é importante ressaltar que esta não é uma ferramenta de:

➡️ Gerenciamento de configuração

O Terraform não é uma ferramenta de gerenciamento de configuração, como o Ansible, Puppet ou o Chef.

Há uma diferença básica entre o Terraform e as ferramentas de gerenciamento de configuração.

O Terraform foca em facilitar a criação e o gerenciamento de sua infraestrutura, enquanto as ferramentas de gerenciamento de configuração são usadas para preparar as VMs e os servidores para atender às necessidades de seu aplicativo e ambiente após o provisionamento.

Por este motivo, embora o Terraform possa configurar e provisionar recursos de infraestrutura, o ideal é que, quando necessário, ele seja usado em conjunto com ferramentas de gerenciamento de configuração, deixando a tarefa de lidar com as tarefas de configuração ao nível do sistema operacional para estas ferramentas.

🐳 Orquestração de containers

O Terraform também não é uma plataforma de orquestração de contêineres, como o Kubernetes.

Da mesma forma que as ferramentas de gerenciamento de configuração, as plataformas de orquestração de contêineres se concentram em uma preocupação separada e podem ser facilmente usadas em colaboração com o Terraform.

Estas ferramentas geralmente oferecem APIs que ajudam a desenvolver Terraform Providers que, por sua vez, podem ser usados efetivamente com o Terraform Core.

Por exemplo, o Terraform Provider para o Kubernetes pode ser encontrado no Terraform Registry.

Portanto, embora o Terraform possa criar e gerenciar recursos relacionados a contêineres, como clusters de contêineres, ele não oferece recursos avançados de orquestração e gerenciamento de contêineres, como escalonamento automático, atualizações de aplicativos em execução ou gerenciamento de estado de aplicativos.

🏁 Conclusão

Neste artigo eu te expliquei como o Terraform pode impactar positivamente suas atividades e projetos.

Essa ferramenta resolve o desafiante problema da complexidade e dificuldade de gerenciar recursos de infraestrutura manualmente, proporcionando uma abordagem automatizada, declarativa e escalável.

Ao adotar essa ferramenta, você ganha agilidade, eficiência e controle sobre a infraestrutura, podendo provisionar, configurar e gerenciar recursos de forma consistente e repetível.

A capacidade de descrever a infraestrutura como código traz inúmeros benefícios, como a automação de processos, a colaboração entre equipes de desenvolvimento e operações, a reprodutibilidade de ambientes e a escalabilidade dos recursos.

Além disso, a comunidade ativa em torno do Terraform fornece suporte e recursos adicionais para maximizar o aproveitamento da ferramenta.

Por estes motivos, eu te encorajo a investir seu tempo para aprender e dominar essa ferramenta, assim como eu venho fazendo ao longo dos últimos anos.

Saiba como passei na certificação Terraform Associate, os benefícios de obter essa certificação e como ela pode te ajudar a avançar em sua carreira.

Comece quanto antes a utilizar e dominar essa poderosa ferramenta de infraestrutura como código em seus projetos e aproveite todos os benefícios que ela oferece.

Você já usa o Terraform? Gostou deste artigo? Ficou com alguma dúvida?

Deixe sua resposta nos comentários!

Até breve 👋

Sérgio Francisco

Como você avalia esta publicação?

Sua opinião é essencial para melhorá-la.

Login or Subscribe to participate in polls.

Join the conversation

or to participate.