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 Cloud Build para executar comandos do Terraform na versão mais recente da imagem Docker do Terraform e usa 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 Usar o Terraform com Google Cloud.

Antes de começar

  • É necessário ter os seguintes papéis do Identity and Access Management (IAM):

    • Administrador de catálogo OU Gerente de catálogo para a Google Cloud organização associada ao Google Cloud projeto 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 Google Cloud projeto 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 Administrador do Storage para o projeto que contém a configuração do Terraform.
    • Cloud Build Editor para o Google Cloud projeto em que você quer criar a solução.

    Se você planeja usar sua própria conta de serviço, também precisará ter o papel Usuário da conta de serviço para o Google Cloud projeto 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 Google Cloud projeto 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 Leitor de objetos do Storage para o projeto que contém a configuração do Terraform.
    • Gravador de registros para o Google Cloud projeto 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. Ative a API Cloud Build.

      Funções necessárias para ativar APIs

      Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

      Ativar a API

      A ativação da API cria automaticamente uma conta de serviço do Cloud Build que você usa na etapa a seguir.
    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 ver 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. No Google Cloud console, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Clique em Criar.
  3. Na página Criar um bucket, insira as informações do seu bucket. Para ir à próxima etapa, clique em Continuar.
    1. Na seção Introdução, faça o seguinte:
      • Insira um nome globalmente exclusivo que atenda aos requisitos de nome de bucket.
      • Para adicionar um rótulo de bucket, expanda a seção Rótulos (), clique em Adicionar rótulo e especifique uma key e um value para o rótulo.
    2. Na seção Escolha onde armazenar os dados, faça o seguinte:
      1. Selecione um tipo de local.
      2. Escolha um local em que os dados do bucket sejam armazenados permanentemente no menu suspenso Tipo de local.
      3. Para configurar a replicação entre buckets, selecione Adicionar replicação entre buckets usando o Serviço de transferência do Cloud Storage e siga estas etapas:

        Configurar a replicação entre buckets

        1. No menu Bucket, selecione um bucket.
        2. Na seção Configurações de replicação, clique em Configurar para definir as configurações do job de replicação.

          O painel Configurar a replicação entre buckets é exibido.

          • Para filtrar objetos a serem replicados por prefixo de nome de objeto, digite um prefixo que você quer incluir ou excluir objetos e clique em Adicionar um prefixo.
          • Para definir uma classe de armazenamento para os objetos replicados, selecione uma classe de armazenamento no menu Classe de armazenamento. Se você pular essa etapa, os objetos replicados vão usar a classe de armazenamento do bucket de destino por padrão.
          • Clique em Concluído.
    3. Na seção Escolha como armazenar os dados, faça o seguinte:
      1. Selecione uma classe de armazenamento padrão para o bucket ou Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
      2. Para ativar o namespace hierárquico, na seção Otimizar o armazenamento para cargas de trabalho com uso intensivo de dados, selecione Ativar namespace hierárquico neste bucket.
    4. Na seção Escolha como controlar o acesso a objetos, selecione se o bucket aplica ou não a prevenção de acesso público, e selecione um método de controle de acesso para os objetos do bucket.
    5. Na seção Escolha como proteger os dados de objetos, faça o seguinte:
  4. Clique em Criar.

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

Se os usuários estiverem implantando a configuração em outro Google Cloud projeto, 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 Google Cloud recurso 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 Google Cloud , consulte Blueprints 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 Google Cloud no console.
    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 Google Cloud projeto em que você está criando a solução, selecione Selecionar uma conta de serviço do projeto atual e selecione a conta de serviço no menu suspenso. Se a conta de serviço estiver localizada em um projeto diferente Google Cloud da solução, selecione Inserir um e-mail de conta de serviço de qualquer projetoe insira o e-mail da 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