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 Google Cloud.

Antes de começar

  • É necessário ter os seguintes papéis de gerenciamento de identidade e acesso (IAM):

    • Administrador de catálogo OU Gerenciador de catálogo para a Google Cloud organização associada ao projeto Google Cloud que tem o catálogo de serviços ativado. Se você não tiver esse papel, entre em contato com o administrador da organização para solicitar o acesso.
    • Administrador do Storage para o projeto Google Cloud em que você quer criar a solução. Se a configuração do Terraform estiver em um projeto diferente, você também precisará ter o papel de administrador do Storage no projeto que contém a configuração do Terraform.
    • Editor do Cloud Build para o projeto Google Cloud em que você quer criar a solução.

    Se você planeja usar sua própria conta de serviço, também precisa ter o papel de Usuário da conta de serviço para o projeto Google Cloud que contém a conta de serviço que você planeja usar.

    Se você não tiver esses papéis, entre em contato com o administrador da organização para solicitar o acesso.

  • Se você planeja usar sua própria conta de serviço, ela precisa ter os seguintes papéis do IAM:

    • Administrador do Storage para o projeto Google Cloud em que você quer criar a solução. Se a configuração do Terraform estiver em um projeto diferente, a conta de serviço também precisará ter o papel de Visualizador de objetos do Storage para o projeto que contém a configuração do Terraform.
    • Logs Writer para o projetoGoogle Cloud em que você quer criar a solução.

    Se você não tiver esses papéis, entre em contato com o administrador da organização para solicitar o acesso.

  • Configure o Cloud Build no projeto em que você está criando a configuração:

    1. Enable the Cloud Build API.

      Enable the API

      A ativação da API cria automaticamente uma conta de serviço do Cloud Build que você usa na próxima etapa.
    2. Acesse a página do Cloud Build.
    3. No painel à esquerda, selecione Configurações.
    4. Use a conta de serviço fornecida na seção E-mail da conta de serviço.
    5. Se você não estiver usando sua própria conta de serviço, conceda os seguintes papéis do IAM à conta de serviço. Para conferir as etapas de concessão de papéis, consulte Como configurar o acesso à conta de serviço do Cloud Build.

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.

Crie 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 Google Cloud em que os usuários implantam a configuração, a conta de serviço já terá esse acesso.

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

  • Conceda o papel Leitor de objetos do Storage (roles/storage.objectViewer) às contas de serviço do Cloud Build dos usuários ou a um recurso Google Cloud em que os usuários implantam 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 Google Cloud comuns, consulte Projetos e módulos do Terraform para Google Cloud.

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: none 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 do administrador do catálogo de serviços no console do Google Cloud.
    Acessar a página "Soluções"

  2. Para escolher o Google Cloud projeto, clique em Selecionar.

  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. Opcionalmente, você pode fornecer sua própria conta de serviço clicando na caixa de seleção ao lado de Selecionar ou inserir sua própria conta de serviço. Se a conta de serviço estiver localizada no mesmo projeto Google Cloud em que você está criando a solução, selecione Selecionar uma conta de serviço do projeto atual e selecione sua conta de serviço no menu suspenso. Se a conta de serviço estiver em um projeto Google Cloud diferente da solução, selecione Digitar um e-mail de conta de serviço de qualquer projeto e insira o e-mail da sua conta de serviço.

  11. 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