Sobes.tech
Junior

O que é o Terraform?

sobes.tech IA

Resposta da IA

O Terraform é uma ferramenta de código aberto criada pela HashiCorp para gerir a infraestrutura como código (IaC). Permite descrever a infraestrutura usando uma linguagem declarativa HCL (HashiCorp Configuration Language) ou JSON, e depois implantá-la, modificá-la e removê-la automaticamente.

Características principais do Terraform:

  • Declarativo: Descreve o estado desejado da infraestrutura, e o Terraform determina as ações necessárias para alcançá-lo.
  • Imutável: O Terraform prefere criar recursos novos em vez de modificar os existentes em mudanças significativas de configuração, aumentando a fiabilidade e a previsibilidade.
  • Provedores: Suporta uma grande quantidade de provedores de serviços cloud (AWS, Azure, GCP), bem como outros serviços (Kubernetes, Docker, bases de dados) através de um sistema de provedores.
  • Estado: O Terraform rastreia o estado da infraestrutura implantada num ficheiro de estado, permitindo compreender o estado atual e calcular as mudanças necessárias.
  • Módulos: Permite criar blocos de configuração reutilizáveis para organizar o código e simplificar a gestão de infraestruturas complexas.
  • Planeamento: Antes de aplicar alterações, o Terraform mostra um plano de ações que será executado, ajudando a evitar consequências inesperadas.

O ciclo de vida típico do Terraform inclui as seguintes etapas:

  1. Inicialização (terraform init) : Carregamento dos provedores e módulos necessários.
    terraform init
    // Inicializa o diretório de trabalho
    
  2. Planeamento (terraform plan) : Geração de um plano de execução que mostra quais recursos serão criados, modificados ou eliminados.
    terraform plan
    // Cria e mostra o plano de execução
    
  3. Aplicação (terraform apply) : Executa o plano para criar ou modificar a infraestrutura.
    terraform apply
    // Aplica o plano à infraestrutura alvo
    
  4. Eliminação (terraform destroy) : Elimina todos os recursos geridos pela configuração atual do Terraform.
    terraform destroy
    // Elimina todos os recursos geridos pelo estado atual do Terraform
    

Exemplo de uma descrição simples de um recurso em HCL:

resource "aws_instance" "example" {
  # Tipo de recurso (instância AWS) e seu nome na configuração
  ami           = "ami-0abcdef1234567890" # ID da imagem AMI
  instance_type = "t2.micro"            # Tipo de instância
  tags = {
    # Etiquetas para o recurso
    Name = "example-instance"
  }
}

O Terraform simplifica e automatiza significativamente a gestão de infraestrutura, tornando-a mais previsível, escalável e versionável.