DEV Community

Monica Hillman for Magalu Cloud

Posted on

IaC com Terraform na Magalu Cloud: do zero a um ambiente reproduzível

Infraestrutura em nuvem permite criar recursos rapidamente, mas também traz um desafio comum: como garantir que ambientes sejam consistentes e reproduzíveis?

Criar recursos manualmente pelo console funciona no início. Porém, conforme a infraestrutura cresce, manter ambientes idênticos entre desenvolvimento, homologação e produção se torna difícil.

É nesse cenário que entra Infraestrutura como Código (IaC).

Neste artigo vamos construir um exemplo prático usando Terraform na Magalu Cloud, criando um ambiente reproduzível com:

  • Compute (máquina virtual)
  • Storage persistente (Block Storage)
  • Object Storage
  • State remoto para colaboração entre equipes

Ao final, você terá um projeto capaz de recriar toda a infraestrutura em poucos comandos.


O que é Infraestrutura como Código (IaC)

Infraestrutura como Código é a prática de descrever a infraestrutura em arquivos de configuração versionáveis.

Em vez de criar recursos manualmente, você escreve definições declarativas que descrevem o estado desejado do ambiente.

O Terraform interpreta essas definições e executa as mudanças necessárias.

Esse modelo traz benefícios importantes:

  • Reprodutibilidade — qualquer pessoa pode recriar o ambiente
  • Versionamento — mudanças ficam registradas em Git
  • Previsibilidadeterraform plan mostra o que será alterado
  • Automação — integração simples com pipelines de CI/CD

Na Magalu Cloud, a infraestrutura pode ser gerenciada por Console, APIs, CLI ou Terraform, utilizando o provider oficial:


magalucloud/mgc

Enter fullscreen mode Exit fullscreen mode

Arquitetura que vamos criar

Neste artigo vamos montar uma infraestrutura simples e reproduzível.


VM (Compute)
├─ IP público
└─ Volume Block Storage

Object Storage
└─ Bucket para dados e Terraform state

Enter fullscreen mode Exit fullscreen mode

Esse ambiente já permite executar aplicações e armazenar dados persistentes.


Configurando o provider da Magalu Cloud

No arquivo main.tf:

terraform {
  required_providers {
    mgc = {
      source = "magalucloud/mgc"
    }
  }
}

provider "mgc" {
  region  = var.mgc_region
  api_key = var.mgc_api_key
}
Enter fullscreen mode Exit fullscreen mode

A autenticação pode ser feita usando variáveis de ambiente como:

MGC_API_KEY
MGC_REGION
MGC_OBJ_KEY_ID
MGC_OBJ_KEY_SECRET
MGC_ENV
Enter fullscreen mode Exit fullscreen mode

Isso evita expor credenciais diretamente no código.


Inicializando o Terraform

Depois de configurar o provider:

terraform init
Enter fullscreen mode Exit fullscreen mode

Visualize o que será criado:

terraform plan
Enter fullscreen mode Exit fullscreen mode

E aplique a infraestrutura:

terraform apply
Enter fullscreen mode Exit fullscreen mode

Esses comandos fazem parte do fluxo básico de trabalho com Terraform.


Criando a máquina virtual

A criação de uma instância exige alguns parâmetros básicos:

  • Availability Zone
  • imagem do sistema operacional
  • tipo da máquina
  • chave SSH

Exemplo simplificado:

resource "mgc_virtual_machine_instances" "app" {
  name              = "app-1"
  availability_zone = var.az

  image_id        = var.image_id
  machine_type_id = var.machine_type_id

  ssh_key_name = var.ssh_key_name

  network {
    associate_public_ip = true
  }
}
Enter fullscreen mode Exit fullscreen mode

Depois da execução do Terraform, a VM estará pronta para acesso via SSH.


Adicionando armazenamento persistente

Para aplicações que precisam armazenar dados de forma persistente, podemos anexar um volume de Block Storage à instância.

resource "mgc_block_storage_volume" "data" {
  name = "volume-via-terraform"
  size = 30

  type = {
    name = "cloud_nvme20k"
  }
}

resource "mgc_block_storage_attachment" "data_attach" {
  volume_id   = mgc_block_storage_volume.data.id
  instance_id = mgc_virtual_machine_instances.app.id
}
Enter fullscreen mode Exit fullscreen mode

Esse volume pode ser utilizado para bancos de dados, arquivos de aplicação ou dados de usuário.

Um ponto importante: volumes precisam estar na mesma Availability Zone da VM para serem anexados.


Usando Object Storage para Terraform state

Quando várias pessoas trabalham no mesmo projeto Terraform, é importante armazenar o Terraform state remotamente.

Na Magalu Cloud, o Object Storage é compatível com S3, permitindo usar o backend s3 do Terraform.

Exemplo conceitual:

terraform {
  backend "s3" {
    bucket   = "terraform-state"
    key      = "iac/terraform.tfstate"
    region   = "br-ne1"
    endpoint = "https://br-ne1.magaluobjects.com"
  }
}
Enter fullscreen mode Exit fullscreen mode

Isso evita conflitos quando múltiplos desenvolvedores executam o Terraform.


Conclusão

Infraestrutura como Código muda completamente a forma de gerenciar ambientes em nuvem.

Com Terraform na Magalu Cloud é possível:

  • automatizar provisionamento
  • reproduzir ambientes completos
  • reduzir erros manuais
  • integrar infraestrutura ao fluxo de desenvolvimento

Ao definir compute e storage em código, sua infraestrutura deixa de ser um conjunto de recursos criados manualmente e passa a ser um sistema previsível, versionável e automatizado.

Links interessantes:

Top comments (0)