Provisionar recursos do Cloud Build com o Terraform

Hashicorp Terraform é uma ferramenta de infraestrutura como código (IaC, na sigla em inglês) que permite provisionar e gerenciar infraestrutura em nuvem. O Terraform fornece plug-ins chamados provedores, que permitem interagir com provedores de nuvem e outras APIs. É possível usar o provedor do Terraform para Google Cloud para provisionar e gerenciar recursos do Google Cloud , incluindo o Cloud Build.

Esta página apresenta o uso do Terraform com o Cloud Build, incluindo uma introdução sobre como o Terraform funciona e alguns recursos para ajudar você a começar a usar o Terraform com Google Cloud. Também há links para documentos de referência do Terraform para o Cloud Build, exemplos de código e guias para usar o Terraform para provisionar recursos do Cloud Build.

Para instruções sobre como começar a usar o Terraform para Google Cloud, consulte Instalar e configurar o Terraform ou o Guia de início rápido do Terraform para Google Cloud .

Como o Terraform funciona

O Terraform tem uma sintaxe declarativa e orientada pela configuração, que pode ser usada para descrever a infraestrutura que você quer provisionar no projeto do Google Cloud . Depois de criar essa configuração em um ou mais arquivos de configuração do Terraform, use a CLI do Terraform para aplicá-la aos recursos do Cloud Build.

As etapas a seguir explicam como o Terraform funciona:

  1. Você descreve a infraestrutura que quer provisionar em um arquivo de configuração do Terraform. Não é preciso escrever código descrevendo como provisionar a infraestrutura. O Terraform provisiona a infraestrutura para você.
  2. Você executa o comando terraform plan, que avalia sua configuração e gera um plano de execução. É possível analisar o plano e fazer alterações conforme necessário.
  3. Você executará o comando terraform apply, que realiza as seguintes ações:

    1. Ele provisiona sua infraestrutura com base no plano de execução invocando as APIs Cloud Build correspondentes em segundo plano.
    2. Ele cria um arquivo de estado do Terraform, que é um arquivo JSON que mapeia os recursos no arquivo de configuração aos recursos na infraestrutura do mundo real. O Terraform usa esse arquivo para manter um registro do estado mais recente da sua infraestrutura e determinar quando criar, atualizar e destruir recursos.
    3. Ao executar terraform apply, o Terraform usa o mapeamento no arquivo de estado para comparar a infraestrutura atual com o código e fazer atualizações conforme necessário:

      • Se um objeto de recurso for definido no arquivo de configuração, mas não existir no arquivo de estado, o Terraform o criará.
      • Se há um objeto de recurso no arquivo de estado, mas tem uma configuração diferente do arquivo de configuração, o Terraform atualiza o recurso para corresponder ao arquivo de configuração.
      • Se um objeto de recurso no arquivo de estado corresponder ao seu arquivo de configuração, o Terraform deixará o recurso inalterado.

Recursos do Terraform para o Cloud Build

Recursos são os elementos fundamentais da linguagem do Terraform. Cada no bloco "resource", que descreve um ou mais objetos de infraestrutura, como ou instâncias de computação.

A tabela a seguir lista os recursos do Terraform disponíveis para o Cloud Build:

Serviço do Cloud Build Recursos do Terraform Fontes de dados
Cloud Build v1 google_cloudbuild_trigger
Cloud Build v2 google_cloudbuildv2_connection_iam_policy

Guias baseados no Terraform para o Cloud Build

A tabela a seguir lista guias e tutoriais do Terraform para o Cloud Build:

Guia Detalhes
Conectar-se a um repositório do GitHub Neste guia, explicamos como conectar um repositório do GitHub ao Cloud Build usando o Terraform.
Conectar-se a um host do GitHub Enterprise Neste guia, explicamos como conectar um host do GitHub Enterprise ao Cloud Build usando o Terraform.
Conectar-se a um repositório do GitHub Enterprise Este guia explica como conectar um repositório do GitHub Enterprise ao Cloud Build usando o Terraform.
Conectar-se a um host do GitLab Enterprise Edition Este guia explica como conectar um host do GitLab Enterprise Edition ao Cloud Build usando o Terraform.
Conectar-se a um repositório do GitLab Enterprise Edition Este guia explica como conectar um repositório do GitLab Enterprise Edition ao Cloud Build usando o Terraform.
Conectar-se a um host do Bitbucket Data Center Este guia explica como conectar um host do Bitbucket Data Center ao Cloud Build usando o Terraform.
Conectar a um repositório do Bitbucket Data Center Este guia explica como conectar um repositório do Bitbucket Data Center ao Cloud Build usando o Terraform.
Conectar-se a um host do Bitbucket Cloud Neste guia, explicamos como conectar um host do Bitbucket Cloud ao Cloud Build usando o Terraform.
Conectar a um repositório do Bitbucket Cloud Neste guia, explicamos como conectar um repositório do Bitbucket Cloud ao Cloud Build usando o Terraform.
Implantar no Compute Engine Este guia explica como realizar implantações azul-verde sem tempo de inatividade em grupos de instâncias gerenciadas (MIGs, na sigla em inglês) do Compute Engine usando o Cloud Build e o Terraform.

Módulos e blueprints do Terraform para o Cloud Build

Os módulos e modelos ajudam a automatizar o provisionamento e o gerenciamento de recursos do Google Cloud em escala. Um módulo é um conjunto reutilizável de arquivos de configuração do Terraform que cria uma abstração lógica dos recursos do Terraform. Um blueprint é um pacote de módulos implantáveis e reutilizáveis e uma política que implementa e documenta uma solução específica.

A tabela a seguir lista os módulos e blueprints relacionados ao Cloud Build:

Módulo ou blueprint Detalhes
Pipeline de CI/CD seguro Esse módulo permite que Google Cloud os clientes implantem rapidamente um pipeline de CI/CD seguro, implementando muitas das funções descritas em Como reduzir a segurança.
terraform-google-bootstrap Esse módulo ajuda a iniciar uma Google Cloud organização, criando todos os recursos e permissões necessários para começar a usar o Cloud Foundation Toolkit (CFT). Para usuários que querem usar o Cloud Build e o Cloud Source Repositories para o código de base, este módulo contém um submódulo que inicializa todos os recursos necessários.

A seguir