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
-
Previsibilidade —
terraform planmostra 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
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
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
}
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
Isso evita expor credenciais diretamente no código.
Inicializando o Terraform
Depois de configurar o provider:
terraform init
Visualize o que será criado:
terraform plan
E aplique a infraestrutura:
terraform apply
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
}
}
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
}
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"
}
}
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)