O que é Terraform?

Publicado 15/04/2025
Atualizado 13/07/2026
Programador processando dados em um notebook em uma sala de servidores
By Derek Robertson, Matthew Kosinski and Gregg Lindemulder

Terraform, definição

O Terraform é um produto de infraestrutura como código (IaC) de nível empresarial criado pela HashiCorp. O Terraform oferece uma interface unificada de gerenciamento do ciclo de vida da infraestrutura e um único fluxo de trabalho para provisionar componentes de infraestrutura em múltiplas nuvens (AWS, Azure e Google Cloud), redes, data centers privados e ambientes SaaS.

Com o Terraform, os usuários podem criar, atualizar e destruir componentes de infraestrutura escrevendo arquivos de configuração legíveis por humanos. Esses arquivos de configuração usam uma linguagem declarativa, e não uma linguagem procedural. Os usuários descrevem o estado final desejado para os recursos de infraestrutura, e o Terraform cuida do resto. Ele cria automaticamente um plano de execução, identifica as dependências entre recursos e provisiona os componentes na ordem correta.

Por exemplo, se uma máquina virtual (VM) depende de uma nuvem privada virtual (VPC), o Terraform garante que a VPC seja criada antes de provisionar a VM.

Por outro lado, com uma linguagem procedural, os desenvolvedores precisam escrever instruções passo a passo para provisionar a infraestrutura.

Os arquivos de configuração do Terraform podem ser versionados, reutilizados e compartilhados. O Terraform gerencia componentes de baixo nível, como recursos de computação e armazenamento e buckets S3, e componentes de alto nível, como entradas de Domain Name System (DNS) e recursos de software como serviço (SaaS).

Em fevereiro de 2025, a IBM adquiriu a HashiCorp e suas ofertas, incluindo o Terraform.

Como o Terraform funciona?

O Terraform funciona com praticamente qualquer plataforma ou serviço que tenha uma interface de programação de aplicativos (API) acessível, incluindo Amazon Web Services (AWS), Microsoft Azure, Google Cloud, GitHub, IBM Cloud e Docker.

O fluxo de trabalho principal do Terraform consiste em três estágios:

  1. Escrever
  2. Planejamento
  3. Aplicar

1. Escrever

Um desenvolvedor escreve um arquivo de configuração legível por humanos para definir as configurações de recursos da infraestrutura desejada. O arquivo é declarativo. O desenvolvedor descreve a infraestrutura que deseja, mas não como provisioná-la. 

Por exemplo, digamos que um desenvolvedor queira provisionar a infraestrutura para implementar uma aplicação hospedada na nuvem. Ele pode especificar que precisa de máquinas virtuais em uma nuvem privada virtual, com grupos de segurança associados e um balanceador de carga.

Um único arquivo de configuração pode gerenciar recursos localizados em vários provedores de nuvem e serviços.

2. Planejar

O Terraform analisa tanto a configuração escrita fornecida pelo desenvolvedor quanto o estado atual da infraestrutura da organização. Em seguida, ele cria um plano de execução descrevendo como alcançará o estado desejado a partir do estado atual.

O plano em si assume a forma de uma lista de infraestrutura que o Terraform criará, atualizará ou destruirá para alinhar o mundo real com as configurações descritas pelo desenvolvedor.

Considere o exemplo anterior de um desenvolvedor implementando uma aplicação em máquinas virtuais em uma nuvem privada virtual.O plano do Terraform pode incluir ações como:

  • Provisionamento de novas máquinas virtuais para hospedar a aplicação.

  • Modificar um grupo de segurança existente para permitir o tráfego para as novas máquinas virtuais.

  • Provisionamento de um balanceador de carga para distribuir o tráfego entre as máquinas virtuais.

Os desenvolvedores podem revisar, modificar e validar o plano antes que o Terraform o execute.

3. Aplicar

Quando o plano é aprovado, o Terraform executa as operações propostas na ordem correta, respeitando quaisquer dependências de recursos. Ou seja, se o recurso A depender do recurso B, o Terraform garante que o recurso B seja criado antes do recurso A.

Por exemplo, digamos que um desenvolvedor atualize as propriedades de uma VPC e altere o número de máquinas virtuais nessa VPC. O Terraform recria a VPC com as propriedades atualizadas antes de dimensionar as máquinas virtuais.

Componentes do Terraform

Os principais componentes do Terraform incluem:

  • Arquivos de configuração
  • Módulos
  • Arquivos de estado
  • Provedores
  • Registros
  • CLI do Terraform
Arquivos de configuração

Arquivos de configuração são a forma como os desenvolvedores definem os recursos desejados para ambientes locais e na nuvem. Esses arquivos informam ao Terraform quais provedores devem ser usados, qual infraestrutura deve ser criada e quais dados devem ser buscados. Os desenvolvedores podem modificar, reutilizar e compartilhar arquivos de configuração.

Os desenvolvedores podem escrever arquivos de configuração em JSON ou em HashiCorp Configuration Language (HCL). A HCL usa uma sintaxe declarativa: os desenvolvedores descrevem a infraestrutura desejada em vez de especificar como provisioná-la. A HCL se assemelha aos pares de valores-chave do JSON, mas é otimizada para legibilidade humana.

Módulos

Os módulos são contêineres reutilizáveis para múltiplos recursos que são comumente usados em conjunto. Por exemplo, um módulo pode conter máquinas virtuais, bancos de dados, configurações de rede e configurações de segurança, tudo em um único pacote. Os módulos são armazenados como coleções de arquivos de configuração.

Módulos do Terraform permitem que os desenvolvedores criem infraestruturas complexas sem precisar começar do zero todas as vezes. Em vez disso, eles podem usar módulos que já descrevem os arranjos de infraestrutura de que precisam.

Arquivos de estado

O arquivo de estado do Terraform é uma representação do estado atual da infraestrutura, incluindo componentes, configurações e relações entre recursos. 

Quando o Terraform cria um plano, ele começa comparando o arquivo de configuração com o arquivo de estado. Essa comparação permite que o Terraform determine as mudanças necessárias para alinhar a infraestrutura atual com a configuração desejada.

Provedores

Os provedores do Terraform são plug-ins que o Terraform usa para interagir com APIs de serviços e plataformas externas. Os provedores permitem que o Terraform gerencie recursos em ambientes de infraestrutura como serviço (IaaS), plataforma como serviço (PaaS) e software como serviço (SaaS). Cada provedor contém todo o código que o Terraform precisa para se conectar a um serviço, autenticar e provisionar recursos.

Embora os desenvolvedores possam escrever seus próprios provedores, eles também podem usar provedores preexistentes escritos pela HashiCorp e outros usuários do Terraform. Existem provedores pré-construídos para a maioria dos principais serviços de nuvem privada e pública, bem como para bancos de dados, soluções de rede e outras ferramentas comuns. 

O Terraform também pode gerenciar a infraestrutura existente. Usando o bloco de importação, os desenvolvedores podem colocar recursos criados fora do Terraform sob o gerenciamento dele, o que lhes permite codificar e controlar todo o ambiente, e não apenas os recursos novos.

Registros

O Terraform Registry é um repositório de provedores, módulos, regras de política e soluções.

Qualquer pessoa pode publicar e usar os recursos e modelos no Terraform Registry público.Para usar um provedor ou módulo deste registro, os usuários o adicionam às suas configurações. Quando executam terraform init, o Terraform baixa automaticamente tudo o que precisa.

As organizações também podem criar registros privados para compartilhar seus próprios módulos e recursos internamente.

CLI do Terraform

O Terraform CLI é a ferramenta de interface de linha de comando (CLI) para gerenciar infraestrutura com o Terraform. Os desenvolvedores o usam para executar comandos, gerar planos de execução, aplicar alterações e interagir com os principais componentes do Terraform, como arquivos de configuração, arquivos de estado, provedores e módulos.

Como as organizações usam o Terraform?

As organizações usam o Terraform para provisionar e gerenciar a infraestrutura ao longo de todo o seu ciclo de vida. Os casos de uso mais comuns incluem:

  • Gerenciamento de ambientes híbridos e multinuvem
  • Gerenciamento de infraestrutura de aplicações
  • Autoatendimento para desenvolvedores
  • Gerenciamento de políticas e conformidade
  • Colaboração da equipe

Gerenciamento de ambientes híbridos e multinuvem

Ambientes híbridos e multinuvem podem ser complexos, porque cada provedor de nuvem tem suas próprias interfaces, ferramentas e fluxos de trabalho.Nesse tipo de configuração, recursos críticos de nuvem podem estar distribuídos entre nuvens públicas, nuvens privadas e vários data centers.

As organizações podem usar o Terraform para simplificar o gerenciamento e a orquestração de infraestruturas de nuvem complexas e de larga escala. Especificamente, o Terraform permite que as organizações usem a mesma linguagem de configuração para provisionar e gerenciar recursos em nuvens públicas, nuvens privadas e ambientes locais em um fluxo de trabalho unificado.

Para ajudar a gerenciar a infraestrutura em escala, os Terraform Stacks ajudam os usuários a automatizar e otimizar a coordenação, a implementação e o gerenciamento do ciclo de vida de configurações interdependentes do Terraform, reduzindo o tempo e a sobrecarga do gerenciamento de infraestrutura.

Os Stacks substituem a estrutura tradicional de módulo raiz do Terraform por uma nova arquitetura baseada em componentes, construída sobre os módulos do Terraform. Ao usar os Stacks, os usuários podem provisionar e coordenar o ciclo de vida da infraestrutura em escala, com uma abordagem organizada e reutilizável que expande a infraestrutura como código.

Gerenciamento de infraestrutura de aplicações

O Terraform pode implementar e gerenciar a infraestrutura para aplicações de várias camadas, permitindo que as organizações gerenciem recursos para cada nível em um fluxo de trabalho unificado, respeitando as dependências.

Por exemplo, uma aplicação de múltiplas camadas pode consistir em um pool de servidores web, uma camada de banco de dados, uma camada de API, servidores de cache e uma camada de roteamento. O Terraform provisionaria a camada de banco de dados antes de provisionar os servidores web que dependem dele.

Autoatendimento para desenvolvedores

O autoatendimento para desenvolvedores está evoluindo para além do simples provisionamento de infraestrutura e passa a abranger todo o ciclo de vida do aplicativo, da configuração do ambiente à implementação e às operações contínuas.

O Terraform fornece a base para esse modelo moderno de autoatendimento. Ele se integra a portais de desenvolvedores como Backstage, Port e Cortex; a sistemas de ITSM como ServiceNow e Jira; e a plataformas de pipeline de CI/CD como GitHub Actions e Jenkins.

Para as equipes que preferem permanecer nos fluxos de trabalho do Terraform, o Waypoint funciona como o portal de autoatendimento para desenvolvedores nativo do Terraform, possibilitando experiências consistentes de implementação de aplicações orientadas por políticas.

Na AWS, no Azure e no GCP, o Terraform atua como a camada de integração e controle que unifica esses pontos de entrada, permitindo que os desenvolvedores avancem mais rápido sem abrir mão da governança e da consistência operacional.

Gestão de políticas e conformidade

O Terraform pode ajudar as organizações a aplicar políticas de segurança e conformidade aos tipos de recursos que as equipes podem provisionar e usar.

O Sentinel, framework de política como código da HashiCorp para aplicar uma governança granular e baseada em lógica em toda a infraestrutura, oferece uma biblioteca de políticas predefinidas com controles prontos para uso (por exemplo, mapeamentos para o NIST SP-80053). Essas políticas ajudam as equipes a aplicar restrições comuns de conformidade sem precisar escrever todas as políticas do zero.

Por exemplo, as organizações podem usar módulos do Terraform para codificar padrões para implementação e gerenciamento de recursos em toda a organização. Quando outras equipes usam esses módulos aprovados, elas podem ter certeza de que estão implementando os recursos em conformidade com as práticas organizacionais.

Colaboração da equipe

As organizações podem armazenar o código e os arquivos de configuração do Terraform em um sistema de controle de versão (VCS), como um repositório Git. Esse arranjo permite que as equipes de DevOps colaborem no código, revisem definições, acompanhem as alterações na infraestrutura e revertam para versões anteriores da infraestrutura, se necessário.

HashiCorp Terraform vs. Red Hat Ansible

O Terraform e o Ansible costumam ser usados em conjunto para estender a automação para além do provisionamento de infraestrutura. O Terraform se destaca no provisionamento de infraestrutura, preparando e provisionando recursos complexos para ambientes de nuvem e híbridos. O Ansible é uma ferramenta poderosa para o gerenciamento de configuração, modificando e mantendo a infraestrutura existente de forma consistente.

Os playbooks do Ansible, escritos em YAML, permitem um controle refinado de tarefas, como instalação de software e atualização das configurações do sistema.

As duas ferramentas lidam com estágios diferentes, porém conectados, do ciclo de vida da infraestrutura, o que as torna uma opção natural para organizações que buscam consistência entre ambientes.

As integrações entre o Terraform e o Ansible ajudam a preencher a lacuna entre a criação de recursos e o gerenciamento de configuração. Por exemplo, as ações do Terraform podem emitir um evento que ativa o recurso de automação orientada por eventos da Ansible Automation Platform (AAP) para acionar fluxos de trabalho de automação dinâmica do Ansible, tudo com apenas uma aplicação do Terraform.

Essa interconectividade pode ajudar a unificar os conjuntos de ferramentas de infraestrutura e reduzir o atrito nas operações do Dia 2, como aplicação de patches, escalonamento e descomissionamento. Juntos, o Terraform e o Ansible ajudam a garantir que a infraestrutura e as aplicações permaneçam consistentes e confiáveis em todos os estágios do seu ciclo de vida.

IBM DevOps

O que é DevOps?

Andrea Crawford explica o que é DevOps, seu valor e como suas práticas e ferramentas ajudam você a migrar suas aplicações por todo o pipeline de entrega de software, desde a concepção até a produção. Conduzido pelos principais líderes da IBM, o conteúdo foi concebido para ajudar os líderes empresariais a adquirir o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.

Terraform vs. Kubernetes

O Kubernetes e o Terraform são componentes comuns em ambientes de nuvem, e ambos ajudam a automatizar tarefas relacionadas à infraestrutura. No entanto, a principal diferença entre os dois é que o Kubernetes se concentra em cargas de trabalho em contêineres, enquanto o Terraform gerencia todos os tipos de componentes de infraestrutura, incluindo os próprios clusters do Kubernetes.

Kubernetes é uma plataforma de código aberto de orquestração de contêineres para agendar e automatizar a implementação, o gerenciamento e o dimensionamento de aplicações em contêineres. O Terraform é uma ferramenta de infraestrutura como código que automatiza o provisionamento e o gerenciamento da infraestrutura.

Embora essas ferramentas sejam distintas e tenham funções diferentes, elas costumam trabalhar juntas em back-ends de nuvem. Por exemplo, o Terraform pode automatizar a provisão de clusters do Kubernetes em plataformas de nuvem, enquanto o Kubernetes gerencia a implementação de aplicações dentro desses clusters.

Autores

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Gregg Lindemulder

Staff Writer

IBM Think