Esta página descreve o processo de configuração de gatilhos do Cloud Build para automatizar implantações de Google Cloud recursos usando seus repositórios e o Infrastructure Manager.
Quando o Infra Manager se conecta ao repositório do Git, as solicitações de pull invocam uma prévia de uma implantação, e as confirmações invocam a criação de uma prévia de implantação ou a atualização da implantação.
Antes de começar
- Verifique se o Infra Manager está ativado.
- Verifique se você tem as permissões do IAM necessárias para criar implantações:
roles/config.admin
- 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.
- Identifique o repositório Git que tem a configuração do Terraform. Quando você configura a automação descrita nesta página, essa é a configuração do Terraform que o Infra Manager usa para atualizar recursos.
- Recomendado: configure a proteção de ramificação no seu repositório Git.
Automatizar a implantação de recursos do Google Cloud
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 do Git. Uma implantação de uma configuração do Terraform pode ser uma revisão de uma implantação existente. As revisões podem excluir ou substituir os recursos provisionados do Google Cloud .
Quando a configuração for concluída, uma solicitação de envio no repositório do Git vai fazer com que o Infra Manager crie uma prévia da implantação. Quando uma solicitação de envio é fundida, o Infra Manager implanta automaticamente a configuração do Terraform.
O módulo im_cloudbuild_workspace
cria vários recursos, incluindo:
- Uma conexão de repositório do Cloud Build.
- Um acionador 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 visualização usando a configuração do Terraform no repositório.
- Um acionador 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:
- Instale o app GitHub do Cloud Build na sua conta do GitHub ou em uma organização que você tenha.
Crie um token de acesso pessoal.
Defina seu token para não ter data de validade e selecione as seguintes permissões quando solicitado no GitHub:
repo
eread:user
. Se o app estiver instalado em uma organização, selecione também a permissãoread:org
.Depois de gerar o token de acesso pessoal, salve-o em um local seguro. Use o token gerado nas etapas a seguir.
Copie o módulo
im_cloudbuild_workspace
para o arquivomain.tf
no repositório do 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 Gerenciador de infraestrutura é executado.
- DEPLOYMENT_ID: o identificador de implantação que você especifica. Consulte Nome da implantação para saber mais sobre as restrições no identificador de implantação.
- GIT_REPO: o URI do repositório Git.
- REF: a referência do Git da configuração. A referência é opcional. Se você não especificar a referência, a ramificação configurada padrão do repositório do Git será usada.
- GIT_APP_ID: ID de instalação do app GitHub do Cloud Build usado para gatilhos de solicitação de pull e push.
- TOKEN: token de acesso pessoal para um repositório do GitHub. Se fornecido, cria um secret no Secret Manager.
Crie uma implantação (ou atualize a atual) 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
Substitua:
- PROJECT_ID: o ID do projeto em que o Gerenciador de infraestrutura é executado.
- LOCATION: o local em que o Infra Manager é executado. Consulte a lista de locais em Locais do Gerenciador de infraestrutura.
- DEPLOYMENT_ID: o identificador de implantação que você especifica. Consulte Nome da implantação para saber mais sobre as restrições no identificador de implantação.
- SERVICE_ACCOUNT: o nome da conta de serviço usada 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 Gerenciador de infraestrutura é executado.
- GIT_REPO: o repositório Git público.
- DIRECTORY: o diretório que tem a configuração do Terraform.
- REF: a referência do Git da configuração. A referência é opcional. Se você não especificar a referência, a ramificação configurada padrão do repositório do Git será usada.
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 do Terraform bifurcada, consulte a solicitação de envio no GitHub.
Agora que essa automação está configurada, os gatilhos do Cloud Build causam o seguinte:
- Quando uma solicitação de envio é feita para o repositório, o Infra Manager cria uma prévia de implantação usando a configuração do Terraform bifurcada armazenada no repositório do Git.
- Quando uma solicitação de envio é mesclada no repositório, o Infra Manager atualiza a implantação usando a configuração do Terraform bifurcada armazenada no repositório do Git.
A seguir
- Use o Cloud Build para ver os resultados de build dos gatilhos de compilação.
- Acesse os recursos implantados com o Infra Manager.
- Monitore seus recursos do Google Cloud com o Registro de auditoria do Gerenciador de infraestrutura.