Puedes programar ejecuciones recurrentes de Image Builder con los activadores de Cloud Scheduler y Cloud Build. Cuando programas compilaciones de imágenes de SO personalizadas, Cloud Build actualiza automáticamente tus imágenes de referencia con parches del sistema operativo y políticas de seguridad de la organización sin necesidad de intervención manual.
Antes de comenzar
- Completa los pasos de configuración del entorno en Prepara el entorno.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar
código o muestras desde un entorno de desarrollo local, puedes autenticarte en
Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña según cómo planeas usar las muestras de esta página:
gcloud
-
Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
- Configura una región y una zona predeterminadas.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Si usas una shell local, crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
No es necesario que lo hagas si usas Cloud Shell.
Si se muestra un error de autenticación y usas un proveedor de identidad externo (IdP), confirma que accediste a gcloud CLI con tu identidad federada.
Go
Para usar las muestras de Go de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Roles obligatorios
Para obtener los permisos que necesitas para crear activadores y programar compilaciones, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
- Editor de Cloud Build (
roles/cloudbuild.builds.editor) - Ejecutor de trabajos de Cloud Scheduler (
roles/cloudscheduler.jobRunner) o Administrador de Cloud Scheduler (roles/cloudscheduler.admin) - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Crea una canalización de compilación programada
Puedes configurar compilaciones de imágenes recurrentes con gcloud CLI o la biblioteca cliente de Go:
gcloud
Para programar compilaciones de imagen de SO recurrentes con gcloud CLI, completa los siguientes pasos:
Ejecuta el comando
gcloud builds triggers create manualpara crear un activador manual de Cloud Build que especifique tu archivocloudbuild.yamlde destino. Debido a que Cloud Scheduler invoca este activador de forma manual, en lugar de hacerlo en eventos del repositorio, no especifiques filtros de envío ni de solicitud de extracción:gcloud builds triggers create manual \ --name="TRIGGER_NAME" \ --region=REGION \ --build-config=CLOUDBUILD_YAML_PATH \ --project=PROJECT_IDEjecuta el comando
gcloud builds triggers describepara recuperar el ID único (trigger_id) que se generó para tu activador nuevo:gcloud builds triggers describe TRIGGER_NAME \ --region=REGION \ --format="value(id)" \ --project=PROJECT_IDPara crear un trabajo de Cloud Scheduler que envíe una solicitud
HTTP POSTa la API de Cloud Build (projects.locations.triggers.run) según la programación de cron de Unix que necesites, por ejemplo, semanalmente los lunes a las 6:00 a.m. con'0 6 * * 1', ejecuta el 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
Reemplaza lo siguiente:
TRIGGER_NAME: Es el nombre del activador de compilación manual de Cloud Build, por ejemplo,weekly-ubuntu-builder.REGION: la región en la que se creará el activador, por ejemplo,us-central1.CLOUDBUILD_YAML_PATH: Es la ruta de acceso a tu archivocloudbuild.yamlen tu directorio local, por ejemplo,cloudbuild.yaml.PROJECT_ID: Es el ID del proyecto.JOB_NAME: Es el nombre del trabajo cron de Cloud Scheduler, por ejemplo,weekly-custom-os-patching.CRON_SCHEDULE: Es la expresión de programación cron de Unix, por ejemplo,'0 6 * * 1'.TRIGGER_ID: Es el ID único (trigger_id) generado para tu activador.SERVICE_ACCOUNT_EMAIL: Es el correo electrónico de la cuenta de servicio que autoriza a Cloud Scheduler a invocar el activador. Esta cuenta de servicio requiere permisos deroles/cloudbuild.builds.editor.
Go
Para programar canalizaciones de manera programática con las bibliotecas cliente de Go de Cloud Build
y Cloud Scheduler, usa la función scheduleBuild.
Antes de ejecutar esta muestra, completa los siguientes requisitos previos:
- Sube tu archivo de configuración
imagebuilder.yamla tu bucket de Cloud Storage, por ejemplo,gs://STAGING_BUCKET/imagebuilder.yaml. - Otorga a la cuenta de servicio de programación
cloud-build-trigger-scheduler@PROJECT_ID.iam.gserviceaccount.com, el rol de editor de Cloud Build (roles/cloudbuild.builds.editor) en tu proyecto y el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio que ejecuta la compilación. Para obtener más información, consulta Programa compilaciones en la documentación de Cloud Build.
¿Qué sigue?
- Aprende a automatizar compilaciones en eventos de repositorio en eventos de envío, etiqueta o combinación de Git con Terraform.
- Revisa el esquema de la receta de personalización para definir los paquetes de software y los procedimientos de validación.