Se você caiu aqui de pára-quedas e quer ver o que rolou antes, veja o seguinte post:
Terraform do Zero na GCP – Parte 2: Preparando o Ambiente
Agora que já preparamos o terreno, é hora de criar o primeiro projeto. Nesse post, vamos:
- Criar a estrutura básica de um projeto Terraform
- Inicializar o Terraform (
terraform init) - Criar e aplicar um recurso real na GCP (um **bucket no Cloud Storage**)
Estrutura de Arquivos
Crie uma pasta para seu projeto e adicione os seguintes arquivos:
Terraform/
├── main.tf
├── variables.tf
└── outputs.tf
Escrevendo o main.tf
O arquivo main.tf é o arquivo onde toda a lógica está detalhada, onde todos os recursos a serem provisionados estão definidos. Obviamente, são feitas diversas segmentações no processo para facilitar a manutenção, mas o arquivo que é lido e validado inicialmente, é o main.tf
provider "google" {
project = var.project_id
region = var.region
credentials = file(var.credentials_file)
}
resource "google_storage_bucket" "static_site" {
name = "${var.project_id}-static-site"
location = var.region
force_destroy = true
}Escrevendo o variables.tf e o variables.tfvars
Aqui fica o arquivo de declaração das variáveis a serem utilizadas no processo.
Você notou o "${var.project_id}-static-site" logo acima? A ideia aqui é informar para o main.tf que existe uma variável chamada “project_id” e que ela está disponível par ser utilizada.
Qual o valor dela? Se ela não tiver um valor “default”, como na variável region, ela precisará ser declarada no arquivo variables.tfvars.
variable "project_id" {
description = "ID do projeto GCP"
type = string
}
variable "region" {
description = "Região onde os recursos serão criados"
type = string
default = "us-central1"
}
variable "credentials_file" {
description = "Caminho para o arquivo de credenciais (JSON)"
type = string
}Então, crie um arquivo terraform.tfvars com os valores das variáveis a serem utilizadas:
project_id = "seu-projeto-id"<br>region = "us-central1"<br>credentials_file = "/caminho/para/terraform-sa-key.json"Escrevendo o outputs.tf
output "bucket_name" {
description = "Nome do bucket criado"
value = google_storage_bucket.static_site.name
}Inicializando o Terraform
Execute os comandos no terminal:
terraform init
Planejando e aplicando
Primeiro, veja o que será criado:
terraform plan
Depois, aplique:
terraform applyConfirme com yes quando solicitado.
Resultado
Se tudo estiver certo, você verá algo como:
Apply complete! Resources: 1 added.E o nome do bucket criado será exibido no output.

Mas, será que ele criou de fato o bucket?

(Opcional – mas recomendado) Limpando recursos
Para destruir tudo:
terraform destroyE assim, já conseguimos criar o primeiro bucket na GCP!
Mas já terminamos? O que vem no próximo post?
Calma… A brincadeira está só começando!
Agora que criamos nosso primeiro recurso, vamos aprender a trabalhar melhor com as variáveis, outputs, e ver algumas boas práticas, para estruturarmos os projetos de forma escalável.
Se quiser ir para o próximo post da série:
Terraform: Dando o próximo passo – Criando uma infraestrutura do zero na GCP