Packer est un outil Open Source permettant de créer des images de machines virtuelles (VM) identiques pour plusieurs plates-formes à partir d'une même configuration source. Cette page explique comment utiliser Packer et Cloud Build pour créer une image de VM à utiliser sur Compute Engine.
Avant de commencer
Les instructions de cette page partent du principe que vous connaissez bien Packer
. Notez en outre les points suivants :
- Gardez à portée de main votre code source, y compris le modèle Packer.
- Si vous souhaitez utiliser les commandes
gcloud
sur cette page, installez la méthode Google Cloud CLI ; Activez les API suivantes :
gcloud services enable sourcerepo.googleapis.com gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com
Autorisations IAM requises
Pour utiliser Packer avec Cloud Build, accordez le rôle Compute Engine Rôle d'administrateur d'instance (
roles/compute.instanceAdmin.v1
) à votre compte de service de compilation.Pour stocker les images compilées dans Artifact Registry, accordez le rôle Rédacteur Artifact Registry (
roles/artifactregistry.writer
) au compte de service de compilation.
Créer une image à l'aide du compilateur Packer
Cloud Build fournit une image de compilateur Packer générée par la communauté que vous pouvez utiliser pour appeler des commandes packer
dans Cloud Build.
Avant d'utiliser ce compilateur dans un fichier de configuration Cloud Build, vous devez générer l'image et l'importer dans le dépôt Container Registry de votre projet :
Clonez le dépôt cloud-builders-community :
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Accédez à l'image du compilateur Packer :
cd cloud-builders-community/packer
Envoyez la compilation à votre projet :
gcloud builds submit .
Utiliser le compilateur Packer
Assurez-vous de disposer de votre fichier packer.json avec votre code source.
Dans le répertoire racine de votre projet, créez un fichier de configuration de compilation nommé
cloudbuild.yaml
oucloudbuild.json
.Dans ce fichier de configuration, ajoutez une étape de compilation pour appeler la commande
packer build
:YAML
steps: - name: 'gcr.io/[PROJECT_ID]/packer' args: - build - -var - image_name=[IMAGE_NAME] - -var - project_id=[PROJECT_ID] - -var - image_family=[IMAGE_FAMILY] - -var - image_zone=[IMAGE_ZONE] - packer.json
JSON
{ "steps": [ { "name": "gcr.io/[PROJECT_ID]/packer", "args": [ "build", "-var", "image_name=[IMAGE_NAME]", "-var", "project_id=[PROJECT_ID]", "-var", "image_family=[IMAGE_FAMILY]", "-var", "image_zone=[IMAGE_ZONE]", "packer.json" ] } ] }
Où :
[PROJECT_ID]
correspond à votre ID de projet Google Cloud.[IMAGE_NAME]
est le nom de l'image de VM que vous créez.[IMAGE_FAMILY]
correspond à la famille d'images de l'image de VM.[IMAGE_ZONE]
correspond à la zone de l'image.
Lancez la compilation à l'aide du fichier de configuration de compilation :
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Où :
[CONFIG_FILE_PATH]
est le chemin d'accès du fichier de configuration de compilation[SOURCE_DIRECTORY]
est le chemin d'accès ou l'URL du code source.[REGION]
est l'une des régions de compilation compatibles.
Si vous ne spécifiez pas les éléments
[CONFIG_FILE_PATH]
et[SOURCE_DIRECTORY]
dans la commandegcloud builds submit
, Cloud Build considère que le fichier de configuration et le code source se trouvent dans le répertoire de travail actuel.
Une fois les images générées, vous pouvez les consulter sur la page Image Compute Engine dans la console Google Cloud.
Étape suivante
- Apprenez à créer des conteneurs.
- Découvrez comment compiler des projets
Go
. - Découvrez comment résoudre les erreurs de compilation.