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
- 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. Ao configurar a automação descrita nesta página, essa é a configuração do Terraform que o Infra Manager usa para atualizar os recursos.
- 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:
- Instale o app GitHub para Cloud Build na sua conta do GitHub ou em uma organização de sua propriedade.
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:
repoeread: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. Você vai usar o token gerado nas etapas a seguir.
Copie o módulo
im_cloudbuild_workspacepara o arquivomain.tfno 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.
Crie uma implantação (ou atualize a implantação atual) com o
im_cloudbuild_workspacemó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=REFSubstitua:
- 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.
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
- Use o Cloud Build para conferir os resultados dos gatilhos de build.
- Confira os recursos implantados com o Infra Manager.
- Monitore seus Google Cloud recursos com registros de auditoria do Infrastructure Manager.