Vous pouvez planifier des exécutions récurrentes d'Image Builder à l'aide de Cloud Scheduler et de déclencheurs de compilation Cloud Build. Lorsque vous planifiez des compilations d'images d'OS personnalisées, Cloud Build met automatiquement à jour vos images de référence avec des correctifs de système d'exploitation et des règles de sécurité organisationnelles, sans intervention manuelle.
Avant de commencer
- Suivez les étapes de configuration de l'environnement décrites dans Préparer votre environnement.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification permet de valider votre identité pour accéder aux services et aux API Cloud de Confiance by S3NS . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
gcloud
-
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud init
-
- Définissez une région et une zone par défaut.
-
Installez la Google Cloud CLI.
-
Configurez la gcloud CLI afin d'utiliser votre identité fédérée.
Pour en savoir plus, consultez Se connecter à la gcloud CLI avec votre identité fédérée.
-
Créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
Si une erreur d'authentification est renvoyée, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Go
Pour utiliser les exemples Go de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.
Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des déclencheurs et planifier des builds, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
- Éditeur Cloud Build (
roles/cloudbuild.builds.editor) - Exécuteur de jobs Cloud Scheduler (
roles/cloudscheduler.jobRunner) ou Administrateur Cloud Scheduler (roles/cloudscheduler.admin) -
Utilisateur du compte de service (
roles/iam.serviceAccountUser)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un pipeline de compilation planifié
Vous pouvez configurer des compilations d'images récurrentes à l'aide de la gcloud CLI ou de la bibliothèque cliente Go :
gcloud
Pour planifier des compilations d'images d'OS récurrentes à l'aide de la gcloud CLI, procédez comme suit :
Créez un déclencheur de compilation Cloud Build manuel qui spécifie votre fichier
cloudbuild.yamlcible en exécutant la commandegcloud builds triggers create manual. Étant donné que Cloud Scheduler appelle ce déclencheur manuellement plutôt que sur des événements de dépôt, ne spécifiez pas de filtres de demande d'extraction ou de transfert :gcloud builds triggers create manual \ --name="TRIGGER_NAME" \ --region=REGION \ --build-config=CLOUDBUILD_YAML_PATH \ --project=PROJECT_IDRécupérez l'identifiant unique (
trigger_id) généré pour votre nouveau déclencheur en exécutant la commandegcloud builds triggers describe:gcloud builds triggers describe TRIGGER_NAME \ --region=REGION \ --format="value(id)" \ --project=PROJECT_IDPour créer un job Cloud Scheduler qui envoie une requête
HTTP POSTà l'API Cloud Build (projects.locations.triggers.run) selon la planification cron Unix requise (par exemple, tous les lundis à 6h00 à l'aide de'0 6 * * 1'), exécutez la commandegcloud 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
Remplacez les éléments suivants :
TRIGGER_NAME: nom de votre déclencheur de compilation Cloud Build manuel, par exempleweekly-ubuntu-builder.REGION: région dans laquelle créer le déclencheur, par exempleus-central1.CLOUDBUILD_YAML_PATH: chemin d'accès à votre fichiercloudbuild.yamldans votre répertoire local, par exemplecloudbuild.yaml.PROJECT_ID: ID de votre projet.JOB_NAME: nom de votre job Cron Cloud Scheduler, par exempleweekly-custom-os-patching.CRON_SCHEDULE: expression de programmation cron unix, par exemple'0 6 * * 1'.TRIGGER_ID: identifiant unique (trigger_id) généré pour votre déclencheur.SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service qui autorise Cloud Scheduler à appeler le déclencheur. Ce compte de service nécessite des autorisationsroles/cloudbuild.builds.editor.
Go
Pour planifier des pipelines de manière programmatique à l'aide des bibliothèques clientes Go Cloud Build et Cloud Scheduler, utilisez la fonction scheduleBuild.
Avant d'exécuter cet exemple, assurez-vous de remplir les conditions préalables suivantes :
- Importez votre fichier de configuration
imagebuilder.yamldans votre bucket Cloud Storage, par exemplegs://STAGING_BUCKET/imagebuilder.yaml. - Attribuez au compte de service de planification
cloud-build-trigger-scheduler@PROJECT_ID.s3ns.iam.gserviceaccount.comle rôle d'éditeur Cloud Build (roles/cloudbuild.builds.editor) sur votre projet et le rôle d'utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service qui exécute la compilation. Pour en savoir plus, consultez Planifier des builds dans la documentation Cloud Build.
Étapes suivantes
- Découvrez comment automatiser les builds sur les événements de dépôt lors d'événements de push, de tag ou de fusion Git à l'aide de Terraform.
- Consultez le schéma de recette de personnalisation pour définir les packages logiciels et les procédures de validation.