É possível programar execuções recorrentes do Image Builder usando os gatilhos do Cloud Scheduler e do Cloud Build. Quando você programa builds de imagens de SO personalizadas, o Cloud Build atualiza automaticamente as imagens de referência com patches do sistema operacional e políticas de segurança organizacionais sem exigir intervenção manual.
Antes de começar
- Conclua as etapas de configuração do ambiente em Preparar o ambiente.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
-
Instale a CLI do Google Cloud.
-
Configure a CLI gcloud para usar sua identidade federada.
Para mais informações, consulte Fazer login na CLI gcloud com sua identidade federada.
-
Crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Se um erro de autenticação for retornado, confirme se você fez login na CLI gcloud com sua identidade federada.
Go
Para usar as amostras do Go nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Funções exigidas
Para receber as permissões necessárias para criar gatilhos e programar builds, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Editor do Cloud Build (
roles/cloudbuild.builds.editor) - Executor de jobs do Cloud Scheduler (
roles/cloudscheduler.jobRunner) ou Administrador do Cloud Scheduler (roles/cloudscheduler.admin) - Usuário da conta de serviço (
roles/iam.serviceAccountUser)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar um pipeline de build programado
É possível configurar builds de imagem recorrentes usando a CLI gcloud ou a biblioteca de cliente do Go:
gcloud
Para programar builds recorrentes de imagens do SO usando a CLI gcloud, siga estas etapas:
Crie um gatilho de build manual do Cloud Build que especifique o arquivo
cloudbuild.yamlde destino executando o comandogcloud builds triggers create manual. Como o Cloud Scheduler invoca esse gatilho manualmente, em vez de em eventos de repositório, não especifique filtros de solicitação de push ou pull:gcloud builds triggers create manual \ --name="TRIGGER_NAME" \ --region=REGION \ --build-config=CLOUDBUILD_YAML_PATH \ --project=PROJECT_IDRecupere o ID exclusivo (
trigger_id) gerado para o novo gatilho executando o comandogcloud builds triggers describe:gcloud builds triggers describe TRIGGER_NAME \ --region=REGION \ --format="value(id)" \ --project=PROJECT_IDPara criar um job do Cloud Scheduler que envie uma solicitação
HTTP POSTà API Cloud Build (projects.locations.triggers.run) de acordo com a programação cron do Unix necessária, por exemplo, semanalmente às segundas-feiras às 6h usando'0 6 * * 1', execute o comandogcloud scheduler jobs create http:gcloud scheduler jobs create http JOB_NAME \ --schedule="CRON_SCHEDULE" \ --uri="https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/triggers/TRIGGER_ID:run" \ --message-body="{}" \ --oauth-service-account-email="SERVICE_ACCOUNT_EMAIL" \ --location=REGION \ --project=PROJECT_ID
Substitua:
TRIGGER_NAME: o nome do gatilho de build manual do Cloud Build, por exemplo,weekly-ubuntu-builder.REGION: a região em que o gatilho será criado, por exemplo,us-central1.CLOUDBUILD_YAML_PATH: o caminho para o arquivocloudbuild.yamlno diretório local, por exemplo,cloudbuild.yaml.PROJECT_ID: o ID do projeto.JOB_NAME: o nome do cron job do Cloud Scheduler, por exemplo,weekly-custom-os-patching.CRON_SCHEDULE: a expressão de programação cron do Unix, por exemplo,'0 6 * * 1'.TRIGGER_ID: o ID exclusivo (trigger_id) gerado para o gatilho.SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço que autoriza o Cloud Scheduler a invocar o gatilho. Essa conta de serviço requer permissõesroles/cloudbuild.builds.editor.
Go
Para programar pipelines de maneira programática usando as bibliotecas de cliente do Cloud Build
e do Cloud Scheduler para Go, use a função
scheduleBuild.
Antes de executar este exemplo, conclua os seguintes pré-requisitos:
- Faça upload do arquivo de configuração
imagebuilder.yamlpara o bucket do Cloud Storage, por exemplo,gs://STAGING_BUCKET/imagebuilder.yaml. - Conceda à conta de serviço de programação
cloud-build-trigger-scheduler@PROJECT_ID.s3ns.iam.gserviceaccount.como papel de Editor do Cloud Build (roles/cloudbuild.builds.editor) no projeto e o papel de Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço que executa o build. Para mais informações, consulte Programar builds na documentação do Cloud Build.
A seguir
- Saiba como automatizar builds em eventos de repositório em eventos de push, tag ou mesclagem do Git usando o Terraform.
- Consulte o esquema de receita de personalização para definir pacotes de software e procedimentos de validação.