Automatizar a implantação de recursos de Google Cloud

A conexão de gatilhos de build do Cloud Build com o Infrastructure Manager permite automatizar implantações de infraestrutura diretamente dos seus repositórios Git. Nesse fluxo de trabalho, as solicitações de pull geram uma prévia da implantação, e os commits mesclados automaticamente criam ou atualizam a implantação.

Antes de começar

  1. Verifique se o Infra Manager está ativado.
  2. Verifique se você tem as permissões do IAM necessárias para criar implantações:
    • roles/config.admin
  3. Verifique se você tem uma conta de serviço com as permissões necessárias. Para mais detalhes, consulte Configurar a conta de serviço.
  4. Identifique o repositório Git que tem a configuração do Terraform. Ao configurar a automação descrita nesta página, essa é a configuração do Terraform que o Infra Manager usa para atualizar os recursos.
  5. Recomendado: configure a proteção de ramificação para seu repositório Git.

Automatizar a implantação de Google Cloud recursos

As etapas a seguir descrevem a configuração necessária para automatizar a visualização e a implantação de uma configuração do Terraform armazenada em um repositório Git. A implantação de uma configuração do Terraform pode ser uma revisão de uma implantação atual. As revisões podem excluir ou substituir recursos provisionados Google Cloud .

Quando a configuração é concluída, uma solicitação de envio no repositório Git faz com que o Infra Manager crie uma prévia da implantação. Quando uma solicitação de envio é mesclada, o Infra Manager implanta automaticamente a configuração do Terraform.

O módulo im_cloudbuild_workspace cria vários recursos, incluindo:

  • Uma conexão do repositório do Cloud Build.
  • Um gatilho de build do Cloud Build que é invocado quando uma solicitação de envio é criada. Esse gatilho faz com que o Infra Manager crie uma implantação de prévia usando a configuração do Terraform no repositório.
  • Um gatilho de build do Cloud Build que é invocado quando uma solicitação de envio é mesclada com o repositório Git. Esse gatilho faz com que o Infra Manager crie ou atualize a implantação usando a configuração do Terraform no repositório.

Para automatizar as implantações de configuração do Terraform quando o repositório é atualizado:

  1. Instale o app GitHub para Cloud Build na sua conta do GitHub ou em uma organização de sua propriedade.
  2. Crie um token de acesso pessoal.

    Defina o token para não ter data de validade e selecione as seguintes permissões quando solicitado no GitHub: repo e read:user. Se o app estiver instalado em uma organização, selecione também a permissão read:org.

    Depois de gerar o token de acesso pessoal, salve-o em um local seguro. Você vai usar o token gerado nas etapas a seguir.

  3. Copie o módulo im_cloudbuild_workspace para o arquivo main.tf no seu repositório Git:

    module "im-workspace" {
     source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace"
     version = "~> 7.0"
    
     project_id = "PROJECT_ID"
     deployment_id = "DEPLOYMENT_ID"
     im_deployment_repo_uri = "GIT_REPO"
     im_deployment_ref = "REF"
    
     github_app_installation_id = "GIT_APP_ID"
     github_personal_access_token = "TOKEN"
    }
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que o Infrastructure Manager é executado.
    • DEPLOYMENT_ID: o identificador de implantação que você especifica. Consulte Nome da implantação para detalhes sobre as restrições no identificador de implantação.
    • GIT_REPO: o URI do repositório Git.
    • REF: a referência Git da configuração. A referência é opcional. Se você não especificar a referência, a ramificação padrão configurada do repositório Git será usada.
    • GIT_APP_ID: ID de instalação do app GitHub para Cloud Build usado para acionar solicitações de envio e push.
    • TOKEN: token de acesso pessoal para um repositório do GitHub. Se fornecido, cria um secret no Secret Manager.
  4. Crie uma implantação (ou atualize a implantação atual) com o im_cloudbuild_workspace módulo:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ 
       --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
       --git-source-repo=GIT_REPO \
       --git-source-directory=DIRECTORY \
       --git-source-ref=REF
    

    Substitua:

    • PROJECT_ID: o ID do projeto em que o Infrastructure Manager é executado.
    • LOCATION: o local em que o Infra Manager é executado. Consulte Locais do Infrastructure Manager para conferir a lista de locais.
    • DEPLOYMENT_ID: o identificador de implantação que você especifica. Consulte Nome da implantação para detalhes sobre as restrições no identificador de implantação.
    • SERVICE_ACCOUNT: o nome da conta de serviço que você usa para chamar o Infra Manager.
    • SERVICE_ACCOUNT_PROJECT_ID é o ID do projeto da conta de serviço. É comum que esse seja o mesmo projeto em que o Infrastructure Manager é executado.
    • GIT_REPO: o repositório Git público.
    • DIRECTORY: o diretório que tem a configuração do Terraform.
    • REF: a referência Git da configuração. A referência é opcional. Se você não especificar a referência, a ramificação padrão configurada do repositório Git será usada.
  5. Para confirmar se o repositório Git está conectado corretamente ao Infra Manager, crie uma solicitação de envio no repositório.

    Para conferir os resultados da validação da configuração bifurcada do Terraform, acesse a solicitação de envio no GitHub.

Agora que essa automação está configurada, os gatilhos de build do Cloud Build causam o seguinte:

  • Quando uma solicitação de envio é feita ao repositório, o Infra Manager cria uma implantação de prévia usando a configuração bifurcada do Terraform armazenada no repositório Git.
  • Quando uma solicitação de envio é mesclada ao repositório, o Infra Manager atualiza a implantação usando a configuração bifurcada do Terraform armazenada no repositório Git.

A seguir