O Terraform é uma ferramenta de código aberto de infraestrutura como código (IaC) criada pela HashiCorp. O Terraform permite que os desenvolvedores provisionem, atualizem e destruam componentes de infraestrutura local e de nuvem, como máquinas virtuais e clusters do Kubernetes, escrevendo arquivos de configuração legíveis por humanos.
O HashiCorp Terraform usa uma linguagem declarativa em vez de uma linguagem procedural. Os usuários descrevem o estado final desejado para os recursos de infraestrutura, e o Terraform cuida do resto.
O Terraform cria automaticamente um plano de execução, identifica dependências entre recursos e provisiona os componentes na ordem correta. Por exemplo, se uma máquina virtual (VM) depender 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 processual, os desenvolvedores devem 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 componentes de alto nível, como entradas do Sistema de Nomes de Domínio (DNS) e funcionalidades de software como serviço (SaaS).
Em fevereiro de 2025, a IBM adquiriu a HashiCorp e suas ofertas, incluindo o Terraform.
O Terraform cria e gerencia recursos em plataformas de nuvem e outros serviços por meio de interfaces de programação de aplicativos (APIs). O Terraform funciona com praticamente qualquer plataforma ou serviço com uma 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:
Um desenvolvedor escreve um arquivo de configuração legível por humanos para definir as configurações de recursos para a infraestrutura desejada. O arquivo é declarativo, o que significa que o desenvolvedor descreve a infraestrutura desejada, mas não como provisioná-la.
Por exemplo, se um desenvolvedor quiser 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.
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 que descreve como alcançará o estado final 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:
Os desenvolvedores podem revisar e modificar o plano antes que o Terraform o execute.
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, se um desenvolvedor atualizar as propriedades de uma VPC e alterar o número de máquinas virtuais nessa VPC, o Terraform recria a VPC com as propriedades atualizadas antes de escalar as máquinas virtuais.
Os principais componentes do Terraform incluem:
Os 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 criar 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.
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.
Os 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.
Um 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. Isso permite que o Terraform determine as mudanças necessárias para alinhar a infraestrutura atual com a configuração desejada.
Os provedores do Terraform são plug-ins que permitem que o Terraform interaja com APIs para 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 criados previamente para a maioria dos principais serviços de nuvem pública e privada, bem como para bancos de dados, soluções de rede e outras ferramentas comuns.
O Terraform Registry é um repositório para provedores, módulos, regras de políticas e soluções.
Qualquer pessoa pode publicar e consumir os recursos no registro público do Terraform. As organizações também podem criar registros privados para compartilhar seus próprios módulos e recursos internamente.
A CLI do Terraform é uma 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.
As organizações usam o Terraform para provisionar e gerenciar a infraestrutura durante todo o seu ciclo de vida. Os casos de uso comuns incluem:
Os ambientes multinuvem podem ser complexos porque cada provedor de nuvem tem suas próprias interfaces, ferramentas e fluxos de trabalho. Além disso, os principais recursos podem ser distribuídos em vários data centers.
As organizações podem usar o Terraform para simplificar o gerenciamento e a orquestração de infraestruturas multinuvem em grande escala. Especificamente, o Terraform permite que as organizações usem a mesma linguagem de configuração para provisionar e gerenciar recursos em vários provedores de serviços em um único fluxo de trabalho.
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 várias 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.
Em grandes organizações, as equipes centralizadas de operações de TI normalmente recebem muitas solicitações de infraestrutura repetitivas.
As organizações podem usar o Terraform para criar um modelo de infraestrutura de autoatendimento que capacite as equipes de produtos a gerenciar sua própria infraestrutura de forma independente. Por exemplo, ao usar módulos criados previamente, as equipes podem implementar diretamente componentes padronizados e aprovados.
As organizações também podem integrar o Terraform a sistemas de abertura de chamados e pipelines de DevOps de integração contínua/entrega contínua (CI/CD) para ajudar a automatizar novas solicitações de provisionamento de infraestrutura. Por exemplo, quando um usuário envia uma solicitação de infraestrutura ao sistema de chamados, o Terraform pode iniciar um fluxo de trabalho para atualizar automaticamente os recursos conforme necessário.
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.
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.
As organizações podem armazenar os arquivos de configuração do Terraform em um sistema de controle de versão (VCS), o que permite que as equipes de DevOps colaborem no código, revisem as definições, rastreiem as alterações na infraestrutura e revertam para versões anteriores da infraestrutura, se necessário.
O Kubernetes e o Terraform são componentes comuns dos ambientes de nuvem e ambos ajudam a automatizar as 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.
O Kubernetes é uma plataforma de código aberto de orquestração de contêineres para programar 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 sejam ferramentas distintas com funções diferentes, elas geralmente trabalham juntas em ambientes 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.
Tanto o Terraform quanto o Ansible são ferramentas de infraestrutura como código que ajudam a automatizar tarefas fundamentais de infraestrutura. No entanto, eles usam linguagens diferentes e geralmente servem a propósitos diferentes. O Terraform é usado para provisionar recursos de infraestrutura, enquanto o Ansible é frequentemente usado para gerenciar configurações de recursos.
O Terraform usa uma linguagem puramente declarativa, enquanto o Ansible combina linguagens declarativas e processuais. Na configuração processual, um desenvolvedor especifica as etapas para configurar os recursos no estado desejado. A configuração processual é mais trabalhosa, mas também pode proporcionar mais controle.
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. O Ansible também possui uma variedade de módulos criados previamente para tarefas comuns de gerenciamento de configuração, incluindo gerenciamento de pacotes e atualizações do sistema operacional. E o Ansible pode aplicar alterações nos recursos de forma idempotente, o que significa que, após a execução de uma operação pela primeira vez, as novas execuções da mesma operação não alteram o recurso.
Juntas, essas características ajudam a explicar por que o Ansible é uma escolha comum para o gerenciamento de configuração.
Embora o Terraform possa provisionar recursos de infraestrutura, ele não pode gerenciar o software dentro dos recursos de forma tão eficaz quanto o Ansible. Por exemplo, o Terraform pode definir uma nova máquina virtual, incluindo propriedades como tipo de instância e tamanho do disco, mas não pode atualizar o sistema operacional na máquina virtual.
No entanto, o Terraform pode trabalhar lado a lado com ferramentas de gerenciamento de configuração, como o Ansible, para simplificar e agilizar a configuração da infraestrutura. Por exemplo, uma organização pode usar o Terraform para provisionar máquinas virtuais e o Ansible para configurar o software nessas máquinas.
Escale automaticamente sua infraestrutura de TI existente para obter maior desempenho com custos reduzidos.
Descubra como a IA para operações de TI fornece os insights de que você precisa para ajudar a impulsionar o desempenho excepcional dos negócios.
Vá além da automação de tarefas simples para lidar com processos estratégicos voltados para o cliente e geradores de receita, com adoção integrada e escalabilidade.