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 apply

Confirme 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 destroy

E 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