Lab: Criando uma Storage Account no Azure usando Terraform Workspaces
Introdução
Neste laboratório, vamos criar uma Storage Account no Azure utilizando Terraform 1.12.2 e workspaces para isolar ambientes (dev, hml e prod). Cada workspace terá seu próprio estado, permitindo reaproveitar o mesmo código com recursos diferentes por ambiente.
Pré-requisitos
- Terraform 1.12.2 instalado
- Conta Azure autenticada com
az login
export ARM_SUBSCRIPTION_ID="subscription_id"
Etapas Iniciais
- Crie o diretório e entre nele:
mkdir lab-storage-ws && cd lab-storage-ws
- Crie os arquivos básicos do Terraform:
touch main.tf variables.tf outputs.tf provider.tf
- Estrutura esperada:
lab-storage-ws/
├── main.tf
├── variables.tf
├── outputs.tf
├── provider.tf
Arquivo: provider.tf
provider "azurerm" {
features {}
}
Arquivo: variables.tf
variable "location" {
description = "Localização dos recursos"
default = "eastus"
}
Arquivo: main.tf
resource "azurerm_resource_group" "rg" {
name = "rg-${terraform.workspace}"
location = var.location
}
resource "azurerm_storage_account" "storage" {
name = "st${terraform.workspace}acc${substr(md5(terraform.workspace), 0, 4)}"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_tier = "Standard"
account_replication_type = "LRS"
}
Arquivo: outputs.tf
output "storage_account_name" {
value = azurerm_storage_account.storage.name
}
output "resource_group_name" {
value = azurerm_resource_group.rg.name
}
output "workspace" {
value = terraform.workspace
}
Comandos Terraform
terraform init
terraform workspace new dev
terraform workspace select dev
terraform apply
terraform workspace new hml
terraform workspace select hml
terraform apply
terraform workspace new prod
terraform workspace select prod
terraform apply
Resultado Esperado
- Um resource group e uma storage account criados por ambiente
- Recursos separados com base no nome do workspace ativo
Exemplo de nomes:
- Resource Group:
rg-dev,rg-hml,rg-prod - Storage Account:
stdevaccxxxx,sthmlaccxxxx,stprodaccxxxx
Dicas e Boas Práticas
- Use
terraform.workspacepara personalizar recursos por ambiente - Sempre verifique o workspace ativo com
terraform workspace show - Evite usar workspaces para isolar projetos diferentes — ideal apenas para ambientes
- Mantenha a estrutura de arquivos simples e reutilizável
Destruindo os Ambientes
Para remover os recursos criados, basta selecionar o workspace correspondente e executar o comando destroy:
terraform workspace select dev
terraform destroy -auto-approve
terraform workspace select hml
terraform destroy -auto-approve
terraform workspace select prod
terraform destroy -auto-approve
Dicas e Boas Práticas
- Use
terraform.workspacepara personalizar recursos por ambiente - Sempre verifique o workspace ativo com
terraform workspace show - Evite usar workspaces para isolar projetos diferentes — ideal apenas para ambientes
- Mantenha a estrutura de arquivos simples e reutilizável
Este lab mostra como usar Terraform Workspaces para gerenciar múltiplos ambientes com o mesmo código, mantendo estados isolados e a infraestrutura organizada.