Pular para o conteúdo principal

O que é o Terraform? Comece a usar a infraestrutura como código

Leia nosso guia passo a passo para iniciantes sobre o uso do Terraform e saiba como automatizar e gerenciar com eficiência sua infraestrutura do Azure, AWS e Google Cloud.
Actualizado 29 de jul. de 2024  · 10 min de leitura

A infraestrutura como código (IaC) é um processo que automatiza o provisionamento e o gerenciamento da infraestrutura por meio de código. Embora a configuração física do hardware e as ferramentas de configuração interativa possam ser usadas para provisionar a infraestrutura, a IaC oferece várias vantagens, como controle de versão, repetibilidade e dimensionamento. Uma das principais ferramentas de IaC disponíveis é o Terraform, uma solução desenvolvida pela HashiCorp em 2014 e usada por mais de 500.000 organizações em todo o mundo. Vamos nos aprofundar em como o Terraform funciona e como usá-lo para operações modernas de TI.

Ao começarmos a aprender sobre o Terraform, saiba que a familiaridade com pelo menos um dos principais provedores de nuvem (AWS, Azure, Google Cloud etc.) é um pré-requisito, pois o Terraform é usado para gerenciar a infraestrutura de nuvem. Nosso curso Understanding Cloud Computing (Entendendo a computação em nuvem ) oferece uma base sólida se você for novo na computação em nuvem.

O que é o Terraform?

O Terraform é uma ferramenta de código aberto que permite que você defina os componentes da infraestrutura e seus relacionamentos usando uma linguagem de configuração de alto nível.

Nos arquivos de configuração legíveis por humanos do Terraform, você pode especificar o estado desejado da sua infraestrutura, e o Terraform automaticamente descobre como chegar a esse estado. Esses arquivos podem ser versionados, compartilhados e reutilizados para fornecer uma maneira consistente de gerenciar sua infraestrutura, desde recursos de computação e armazenamento até recursos de DNS e SaaS.

O Terraform pode ser usado com vários provedores de nuvem, em infraestruturas de várias nuvens e em ambientes locais.

Principais recursos do Terraform

Vamos dar uma olhada mais de perto nos aspectos fundamentais que diferenciam o Terraform: 

HashiCorp Configuration Language

O Terraform usa uma linguagem de alto nível chamada HCL (HashiCorp's Configuration Language), projetada especificamente para definir a infraestrutura como código. As linguagens de configuração de alto nível implementam uma sintaxe declarativa que é abstrata e fácil de usar em comparação com scripts de baixo nível e configuração manual. Você pode ter encontrado linguagens de alto nível antes, em arquivos YAML ou JSON. 

A HCL segue uma estrutura de blocos, em que cada bloco aninhado representa recursos e suas configurações. Os recursos são definidos explicitamente com nomes e atributos.

resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

Plano de execução

Depois que você definir o estado desejado da sua infraestrutura, o Terraform gerará um plano de execução. Esse plano listará as etapas que o Terraform precisa realizar para atingir esse estado, para que você possa revisar as alterações antes que elas sejam aplicadas. Verificar o plano antes de você aplicar as alterações evitará modificações indesejadas, como a exclusão de recursos.

Gerenciamento do estado

O Terraform mantém um arquivo de estado que programa automaticamente o estado atual da sua infraestrutura e serve como fonte de verdade ao determinar quais mudanças precisam ser feitas. Por padrão, ele é armazenado localmente e chamado terraform.tfstate. 

Provedores

Os provedores são plug-ins que interagem com APIs de plataformas de nuvem e outros serviços e permitem que o Terraform gerencie uma ampla variedade de recursos. Os provedores oficiais são desenvolvidos e mantidos pela HashiCorp e seus parceiros confiáveis, como AWS, Azure, Google Cloud, Github, Datadog, etc. Há também plug-ins desenvolvidos pela comunidade, que podem ser encontrados no Terraform Registry ou no Github.

Gráfico de recursos

O Terraform cria um gráfico de recursos que mostra os recursos da sua infraestrutura e as relações entre eles. Esse gráfico permite que o Terraform gere planos de forma eficaz, manipule dependências entre recursos e garanta que os recursos sejam criados, atualizados e excluídos na ordem correta. Esse gráfico também é uma ótima maneira de visualizar sua infraestrutura e entender o impacto das alterações que você pretende fazer. 

Exemplo de Terraform Resource Graph, mostrando os recursos da AWS e as relações de dependência entre eles

Exemplo de gráfico de recursos. Fonte: Documentação da HashiCorp

Primeiros passos com o Terraform

Vamos examinar nosso primeiro fluxo de trabalho do Terraform. Se você é novo no DevOps ou na computação em nuvem em geral, recomendo que faça nossos cursos Understanding Cloud Computing e Introduction to DevOps antes de prosseguir.

Instalação e configuração

Neste tutorial do Terraform, criaremos recursos no AWS. Se você quiser acompanhar e não tiver uma conta, acesse a AWS e inscreva-se.

  1. Faça o download do Terraform no site oficial. Escolha o binário correto para seu sistema operacional e siga as instruções de instalação.
  2. Depois que você tiver instalado o Terraform, abra uma nova janela do Terminal e execute terraform -version para verificar se o software está instalado corretamente. 
  3. Instalar a CLI do AWS
  4. Configure a CLI do AWS executando aws configure em seu terminal. Você será solicitado a inserir o ID da chave de acesso, a chave de acesso secreta, o nome da região padrão e o formato de saída padrão. O Terraform deve ser capaz de acessá-los automaticamente.

Primeira configuração do Terraform

Crie um novo diretório e seu primeiro arquivo de configuração. Vamos chamá-lo de main.tf e informar ao Terraform que queremos criar uma instância do AWS EC2. O código, escrito em HCL, tem a seguinte aparência:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

Inicialização do projeto

Agora, vamos inicializar nosso projeto Terraform executando o seguinte comando:

$ terraform init

Esse é um comando único e fará o download dos plug-ins de provedor necessários. Você não precisará executá-lo para as alterações subsequentes. 

Planejar

Agora, queremos gerar nosso plano de execução. Lembre-se de que o plano destacará as alterações que o Terraform precisará fazer para atingir o estado desejado (neste caso, uma instância do EC2 em execução). Você pode correr:

$ terraform plan

Você deverá ver algo parecido com isto:

Terraform will perform the following actions:

  # aws_instance.example will be created
  + resource "aws_instance" "example" {
      + ami                           = "ami-0c55b159cbfafe1f0"
      + instance_type                 = "t2.micro"
      ...
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Aplicar

Revisamos o plano e agora decidimos executá-lo e provisionar os recursos. Em seu terminal, execute:

$ terraform apply

Você será solicitado a confirmar a ação. Digite "yes" para continuar.

Do you want to perform these actions? 
Terraform will perform the actions described above. 
Only 'yes' will be accepted to approve. 
Enter a value: yes 

 Você deverá ver o seguinte:

aws_instance.example: Creating... 
aws_instance.example: Still creating... [10s elapsed] aws_instance.example: 
Creation complete after 15s [id=i-0abcdef1234567890] 

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

 Parabéns, você provisionou sua primeira instância do EC2 no AWS usando o Terraform!

Benefícios do uso do Terraform

Mencionamos anteriormente que o uso do Terraform oferece muitos benefícios, como consistência e repetibilidade, e uma taxa reduzida de erros humanos graças aos planos de execução. 

Outros benefícios incluem:

  • Provisionamento rápido: O Terraform pode criar e atualizar recursos em paralelo, o que é particularmente útil para criar rapidamente ambientes de desenvolvimento, teste e preparação.
  • Aumento da colaboração: Em conjunto com um sistema de controle de versão como o Git, o Terraform é uma ótima maneira de aumentar a colaboração e a transparência da sua infraestrutura. As alterações podem ser revisadas, aprovadas e programadas da mesma forma que o código do aplicativo.
  • Recuperação eficiente de desastres: Se algo der errado, o Terraform pode recriar rapidamente toda a infraestrutura do zero usando os mesmos arquivos de configuração.
  • Suporte à comunidade: O Terraform incentiva o uso de módulos, que são configurações reutilizáveis que podem ser compartilhadas e promovem práticas recomendadas quando se trata de gerenciar a infraestrutura. O Terraform também possui uma comunidade ativa e um extenso ecossistema de provedores e módulos, o que significa que você provavelmente encontrará algo para a sua pilha de tecnologia, independentemente do seu nicho.

Casos de uso comuns do Terraform

Se você é um engenheiro de dados que está criando pipelines ou um cientista de dados que deseja implantar suas soluções na produção, o Terraform é uma ótima ferramenta para gerenciar suas necessidades de infraestrutura. Aqui estão alguns dos casos de uso mais comuns:

Gerenciamento de várias nuvens

Nem sempre é fácil gerenciar a infraestrutura que abrange vários provedores de nuvem. O Terraform permite que você faça exatamente isso com uma única ferramenta. Além disso, o Terraform pode gerenciar recursos no local, o que o torna uma solução ideal para organizações que operam em um ambiente híbrido.

Fluxos de trabalho de CI/CD

O Terraform se integra bem aos fluxos de trabalho de CI/CD, o que significa que você pode implantar sua infraestrutura como parte do processo de entrega de software. Você também pode criar e destruir automaticamente ambientes de visualização, desenvolvimento, teste ou preparação, quando necessário.

Clusters de Kubernetes

O Terraform pode gerenciar clusters do Kubernetes em diferentes provedores de nuvem, como AWS (EKS), Azure (AKS) ou GCP (GKE). Isso inclui a configuração da infraestrutura necessária, o gerenciamento dos recursos do Kubernetes dentro do cluster e o dimensionamento dos clusters com base nas demandas de carga de trabalho.

Terraform vs. Outras ferramentas de IaC

Outras ferramentas populares de IaC incluem Ansible, Chef, Puppet e AWS CloudFormation. Cada ferramenta tem seus pontos fortes e fracos. Dê uma olhada:

Recurso Terraform Ansible Chefe de cozinha Marionete CloudFormation
Código aberto Sim Sim Sim Sim Não
Sintaxe declarativa Sim Não Não Sim Sim
Suporte a várias nuvens Sim Sim Sim Sim Não, somente AWS
Gerenciamento do estado Sim Não Não Sim Sim
Planos de execução Sim Não Não Não Não
Gerenciamento de dependências Sim Limitada Limitada Sim Sim

Como podemos ver, embora todas essas ferramentas sejam poderosas por si só, o Terraform se destaca por seu conjunto abrangente de recursos. No entanto, essa lista não é exaustiva, e cada ferramenta atende a casos de uso ligeiramente diferentes, dependendo dos requisitos. Por exemplo, o Ansible e sua natureza processual são adequados para o gerenciamento de configurações e tarefas ad-hoc.

Conclusão

Nos últimos 10 anos, o Terraform ajudou milhares de organizações a gerenciar sua infraestrutura de TI. Com sua abordagem declarativa, recursos de automação e suporte para ambientes com várias nuvens, o Terraform se tornou uma das ferramentas de IaC mais populares e, sem dúvida, continuará sendo um dos principais participantes no espaço de gerenciamento de infraestrutura, à medida que a adoção da nuvem continua a crescer. 

Agora que você entende os conceitos básicos do Terraform, pode se aprofundar em configurações mais avançadas e cenários da vida real. Dê uma olhada nos tutoriais do Terraform da HashiCorp para saber como usar o Terraform em tarefas e casos de uso comuns, ou confira nossa postagem no blog 14 Essential Data Engineering Tools to Use in 2024 para entender como o Terraform se encaixa no kit de ferramentas do engenheiro de dados.

Perguntas frequentes

O Terraform é adequado para projetos de pequena escala ou é principalmente para uso corporativo?

O Terraform é uma ferramenta útil, independentemente do tamanho do seu projeto! Não importa se você tem 5 recursos para gerenciar ou 1.000, com certeza verá os benefícios.

Quanto custa o Terraform?

O Terraform é de código aberto e de uso gratuito, mas lembre-se de que seu(s) provedor(es) de nuvem cobrará(ão) de você pelos recursos provisionados e gerenciados por meio do Terraform.

O Terraform pode gerenciar bancos de dados e outros serviços com estado?

Sim, o Terraform pode gerenciar bancos de dados e outros serviços com estado. Você pode definir instâncias, clusters e configurações em seus arquivos IaC.

Como o Terraform lida com segredos e informações confidenciais nos arquivos de configuração?

O Terraform incentiva as práticas recomendadas para lidar com segredos, oferecendo suporte a variáveis de ambiente, variáveis criptografadas e integrações com serviços de gerenciamento de segredos, como o HashiCorp Vault ou o AWS Secrets Manager.

Temas

Aprenda com a DataCamp

Certificação disponível

curso

Entendendo a engenharia de dados

2 hr
228K
Descubra como os engenheiros de dados estabelecem as bases que tornam a ciência de dados possível. Não há necessidade de codificação!
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow