Automatize a implementação de recursos do Google Cloud

Esta página descreve o processo de configuração de acionadores do Cloud Build para automatizar implementações de recursos Google Cloud  usando os seus repositórios e o Infrastructure Manager existentes.

Assim que o Infra Manager se ligar ao seu repositório Git, os pedidos de obtenção invocam uma pré-visualização de uma implementação e as confirmações invocam a criação de uma pré-visualização de implementação ou a atualização da implementação.

Antes de começar

  1. Certifique-se de que o Infra Manager está ativado.
  2. Certifique-se de que tem as autorizações de IAM necessárias para criar implementações:
    • roles/config.admin
  3. Certifique-se de que tem uma conta de serviço com as autorizações necessárias. Para ver detalhes, consulte o artigo Configure a conta de serviço.
  4. Identifique o repositório Git existente que tem a configuração do Terraform. Quando configura a automatização descrita nesta página, esta é a configuração do Terraform que o Infra Manager usa para atualizar os recursos.
  5. Recomendado: configure a proteção de ramificações para o seu repositório Git.

Automatize a implementação de recursos Google Cloud

Os passos seguintes descrevem a configuração necessária para automatizar a pré-visualização e a implementação de uma configuração do Terraform armazenada num repositório Git. Uma implementação de uma configuração do Terraform pode ser uma revisão de uma implementação existente. As revisões podem eliminar ou substituir recursos Google Cloud aprovisionados.

Quando a configuração estiver concluída, um pedido de envio no repositório Git faz com que o Infra Manager crie uma pré-visualização da implementação. Quando um pedido de envio é unido, o Infra Manager implementa automaticamente a configuração do Terraform.

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

  • Uma associação de repositório do Cloud Build.
  • Um acionador do Cloud Build que é invocado quando é criado um pedido de obtenção. Este acionador faz com que o Infra Manager crie uma implementação de pré-visualização usando a configuração do Terraform no repositório.
  • Um acionador do Cloud Build que é invocado quando um pedido de obtenção é sincronizado com o repositório Git. Este acionador faz com que o Infra Manager crie ou atualize a implementação através da configuração do Terraform no repositório.

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

  1. Instale a app GitHub do Cloud Build na sua conta do GitHub ou numa organização da qual é proprietário.
  2. Crie uma chave de acesso pessoal.

    Certifique-se de que define o token para não ter data de validade e selecione as seguintes autorizações quando lhe for pedido no GitHub: repo e read:user. Se a sua app estiver instalada numa organização, certifique-se de que também seleciona a autorização read:org.

    Depois de gerar o seu token de acesso pessoal, guarde-o num local seguro. Vai usar o token gerado nos passos seguintes.

  3. Copie o módulo im_cloudbuild_workspace para o ficheiro 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"
    }
    

    Substituição:

    • PROJECT_ID: o ID do projeto onde o Infrastructure Manager é executado.
    • DEPLOYMENT_ID: o identificador de implementação que especifica. Consulte o artigo Nome da implementação para ver detalhes sobre as restrições no identificador de implementação.
    • GIT_REPO: o URI do repositório Git.
    • REF: a referência Git da configuração. A referência é opcional. Se não especificar a referência, é usado o ramo configurado predefinido do repositório Git.
    • GIT_APP_ID: ID de instalação da app GitHub do Cloud Build usada para acionadores de pedidos de envio e receção.
    • TOKEN: token de acesso pessoal para um repositório do GitHub. Se for fornecido, cria um segredo no Gestor Secreto.
  4. Crie uma implementação (ou atualize a implementação existente) com o módulo im_cloudbuild_workspace:

    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
    

    Substituição:

    • PROJECT_ID: o ID do projeto onde o Infrastructure Manager é executado.
    • LOCATION: a localização onde o Infra Manager é executado. Consulte as localizações do Infrastructure Manager para ver a lista de localizações.
    • DEPLOYMENT_ID: o identificador de implementação que especifica. Consulte o artigo Nome da implementação para ver detalhes sobre as restrições no identificador de implementação.
    • SERVICE_ACCOUNT: o nome da conta de serviço que usa para chamar o Infra Manager.
    • SERVICE_ACCOUNT_PROJECT_ID é o ID do projeto da conta de serviço. É comum que este seja o mesmo projeto onde 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 não especificar a referência, é usado o ramo configurado predefinido do repositório Git.
  5. Para confirmar que o seu repositório Git está corretamente associado ao Infra Manager, crie um pedido de obtenção no seu repositório.

    Para ver os resultados da validação da configuração do Terraform com fork, veja o pedido de envio no GitHub.

    im_cloudbuild_workspace

Agora que esta automatização está configurada, os acionadores do Cloud Build fazem o seguinte:

  • Quando é feito um pedido de envio para o repositório, o Infra Manager cria uma implementação de pré-visualização com a configuração do Terraform bifurcada armazenada no repositório Git.
  • Quando um pedido de obtenção é integrado no repositório, o Infra Manager atualiza a implementação através da configuração do Terraform bifurcada armazenada no repositório Git.

O que se segue?