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

  • Você precisa ter os seguintes papéis do Identity and Access Management (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 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, sua 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 projetoGoogle Cloud em que você quer criar sua 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 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 a ela. 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. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets

  2. Click Create.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    1. In the Get started section, do the following:
      • Enter a globally unique name that meets the bucket naming requirements.
      • To add a bucket label, expand the Labels section (), click Add label, and specify a key and a value for your label.
    2. In the Choose where to store your data section, do the following:
      1. Select a Location type.
      2. Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
      3. To set up cross-bucket replication, select Add cross-bucket replication via Storage Transfer Service and follow these steps:

        Set up cross-bucket replication

        1. In the Bucket menu, select a bucket.
        2. In the Replication settings section, click Configure to configure settings for the replication job.

          The Configure cross-bucket replication pane appears.

          • To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
          • To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
          • Click Done.
    3. In the Choose how to store your data section, do the following:
      1. Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
      2. To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
    4. In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
    5. In the Choose how to protect object data section, do the following:
      • Select any of the options under Data protection that you want to set for your bucket.
        • To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
        • To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
        • To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
          • To enable Object Retention Lock, click the Enable object retention checkbox.
          • To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
      • To choose how your object data will be encrypted, expand the Data encryption section (), and select a Data encryption method.
  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 doGoogle 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 comuns do Google Cloud , 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 em Administrador do catálogo de serviços no console Google Cloud .
    Acessar a página "Soluções"

  2. Para escolher o projeto Google Cloud , 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. Se quiser, forneça 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 no mesmo projeto do Google Cloud em que você está criando a solução, selecione Selecionar uma conta de serviço do projeto atual e escolha a conta no menu suspenso. Se a conta de serviço estiver localizada em um projeto Google Cloud diferente da sua solução, selecione Digitar um e-mail de conta de serviço de qualquer projeto e 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