Como criar uma configuração do Terraform

Ao selecionar soluções do catálogo de serviços para a organização, é possível criar uma configuração do Terraform, que os usuários implantam usando o Terraform. Depois de criar a configuração, é possível compartilhá-la com os usuários atribuindo-a aos catálogos.

Neste guia, você usa o Cloud Build para executar comandos do Terraform na versão mais recente da imagem do Docker do Terraform e usa o Cloud Storage para armazenar e gerenciar recursos do Terraform, como módulos e arquivos de estado.

Para recursos e orientações sobre como usar o Terraform, consulte Como usar o Terraform com o Google Cloud.

Antes de começar

Como fazer upload dos arquivos de configuração para o Cloud Storage

Use o Cloud Storage para gerenciar os arquivos de configuração do Terraform para o catálogo de serviços.

Como criar um bucket do Cloud Storage

Para configurar o Cloud Storage, crie um bucket no mesmo projeto em que você ativou o catálogo de serviços para a organização:

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets page

  2. Click Create bucket.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    • For Name your bucket, enter a name that meets the bucket naming requirements.
    • For Choose where to store your data, do the following:
      • Select a Location type option.
      • Select a Location option.
    • For Choose a default storage class for your data, select a storage class.
    • For Choose how to control access to objects, select an Access control option.
    • For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
  4. Click Create.

Como ativar o controle de versão de objeto

Use o controle de versões de objeto do bucket para evitar que a configuração do Terraform seja excluída ou substituída. Para ativar o controle de versões de objeto, consulte a documentação do Cloud Storage em Como usar o controle de versões de objeto.

Como conceder acesso ao bucket

Quando os usuários da organização implantam a configuração, a conta de serviço do Cloud Build precisa ter acesso de leitura ao bucket. Se o bucket estiver armazenado no mesmo projeto do Cloud em que os usuários implantam a configuração, a conta de serviço já tem esse acesso.

Se os usuários estiverem implantando a configuração em outro projeto do Cloud, conceda acesso ao bucket usando um dos seguintes métodos:

  • Conceda o papel Leitorde objetos do Storage (roles/storage.objectViewer) às contas de serviço do Cloud Build dos usuários ou a um recurso do Google Cloud em que os usuários implantem configurações do Terraform, como um projeto, uma pasta ou uma organização.

  • Use uma lista de controle de acesso (ACL, na sigla em inglês) para gerenciar o acesso ao bucket.

Para detalhes sobre como gerenciar o acesso a buckets, consulte a Visão geral do controle de acesso do Cloud Storage.

Como criar e fazer upload de um módulo do Terraform

Depois de configurar o bucket do Cloud Storage, crie e faça o upload de um módulo do Terraform, que é um contêiner de todos os arquivos de configuração. O catálogo de serviços usa o módulo para gerar automaticamente um arquivo de esquema JSON, que define as variáveis da configuração.

Ao chamar módulos fora do diretório atual, use o caminho remoto em vez de um caminho relativo. Por exemplo, em vez de source = "../../", use source = "GoogleCloudPlatform/cloud-run/google".

Para módulos de casos de uso comuns do Google Cloud, consulte o Cloud Foundation Toolkit.

O exemplo de código a seguir ilustra um arquivo de configuração do Terraform, main.tf:


variable "machine_type" {
  type    = string
  default = "n1-standard-1"
}

variable "zone" {
  type    = string
  default = "us-central1-a"
}

variable "deployment_identifier" {
  description = "The unique name for your instance"
  type        = string
}

resource "google_compute_instance" "default" {
  name         = "vm-${var.deployment_identifier}"
  machine_type = var.machine_type
  zone         = var.zone

  boot_disk {
    device_name = "boot"
    auto_delete = true
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

Depois de criar o módulo, compacte os arquivos em um arquivo ZIP. Verifique se o módulo está armazenado na raiz do arquivo ZIP.

Para garantir o armazenamento adequado do módulo ao compactar os arquivos do Terraform, execute o seguinte comando: zip solution.zip file1.tf file2.tf file3.tf

Em seguida, faça upload do arquivo ZIP no bucket. Para ver as etapas de upload do arquivo ZIP, consulte a documentação do Cloud Storage sobre como fazer upload de objetos.

Como criar a configuração no catálogo de serviços

Depois de configurar um bucket do Cloud Storage com o módulo do Terraform, crie uma solução do catálogo de serviços que inclua o bucket.

Para criar a configuração do Terraform como uma solução do catálogo de serviços:

  1. Acesse a página Soluções de administrador do catálogo de serviços no Console do Cloud.
    Acessar a página "Soluções"

  2. Clique em Selecionar para escolher o projeto do Google Cloud.

  3. Clique em CRIAR SOLUÇÃO. Na lista suspensa, selecione Criar configuração do Terraform.

  4. Insira um nome, uma descrição e um tagline para a configuração do Terraform. O slogan é uma descrição breve de uma solução que os usuários veem ao navegar pelo catálogo de serviços.

  5. No campo Link da configuração do Terraform, forneça o link para o bucket do Cloud Storage que contém o arquivo ZIP para o módulo do Terraform, como gs://my-terraform-bucket/my-zip-file.zip.

  6. Opcionalmente, faça upload de um ícone para a solução. As dimensões recomendadas para um ícone são 80 por 80 pixels.

  7. Opcionalmente, insira um link de suporte e informações de contato do criador.

  8. Opcionalmente, adicione um link da documentação da solução.

  9. Selecione a versão do Terraform que você quer usar para implantar a solução.

  10. Clique em CRIAR.

A solução é criada e aparece na página Soluções do Administrador do catálogo de serviços.

A captura de tela a seguir ilustra como criar uma configuração do Terraform:

Criar uma configuração do
Terraform

Próximas etapas