Packer ist ein Open Source-Tool zum Erstellen identischer VM-Images (virtuelle Maschine) für mehrere Plattformen aus einer einzelnen Quellkonfiguration. Auf dieser Seite wird erläutert, wie Sie mithilfe von Packer und Cloud Build ein VM-Image zur Verwendung in Compute Engine erstellen.
Hinweis
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Packer vertraut sind. Außerdem gilt:
- Halten Sie Ihren Quellcode bereit, einschließlich der Packer-Vorlage.
- Wenn Sie die
gcloudBefehle auf dieser Seite verwenden möchten, installieren Sie die Google Cloud CLI. Aktivieren Sie folgende APIs:
gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com
Erforderliche IAM-Berechtigungen
Wenn Sie Packer mit Cloud Build verwenden möchten, gewähren Sie Ihrem Build-Dienstkonto die Rolle „Compute Engine Instanzadministrator“ (
roles/compute.instanceAdmin.v1).Zum Speichern erstellter Images in Artifact Registry weisen Sie Ihrem Build-Dienstkonto die Rolle Artifact Registry-Autor (
roles/artifactregistry.writer) zu.
Packer-Builder-Image erstellen
Cloud Build bietet ein
Builder-Image der Packer-Community
, mit dem Sie in Cloud Build packer Befehle aufrufen können.
Bevor Sie diesen Builder in einer Cloud Build-Konfigurationsdatei verwenden können, müssen Sie erst das Image erstellen und an Artifact Registry übertragen:
Klonen Sie das Repository cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.gitWechseln Sie zum Packer-Builder-Image:
cd cloud-builders-community/packerÜbertragen Sie den Builder in Ihr Projekt:
gcloud builds submit .
Packer-Builder verwenden
Vergewissern Sie sich, dass Sie die Datei packer.json zusammen mit Ihrem Quellcode haben.
Erstellen Sie im Stammverzeichnis des Projekts eine Build-Konfigurationsdatei mit dem Namen
cloudbuild.yamlodercloudbuild.json.Fügen Sie der Build-Konfigurationsdatei einen Build-Schritt hinzu, um den Befehl
packer buildaufzurufen: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.jsonJSON
{ "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" ] } ] }Wobei:
[PROJECT_ID]ist Ihre Google Cloud Projekt-ID.[IMAGE_NAME]ist der Name des VM-Images, das Sie erstellen.[IMAGE_FAMILY]ist die Image-Familie des VM-Images.[IMAGE_ZONE]ist die Zone des Images.
Starten Sie den Build mithilfe der Build-Konfigurationsdatei:
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]Dabei gilt:
[CONFIG_FILE_PATH]ist der Pfad zur Build-Konfigurationsdatei.[SOURCE_DIRECTORY]ist der Pfad oder die URL zum Quellcode.[REGION]ist eine der unterstützten Build-Regionen.
Wenn Sie im Befehl
gcloud builds submitkeine Werte für[CONFIG_FILE_PATH]und[SOURCE_DIRECTORY]angeben, geht Cloud Build davon aus, dass sich die Konfigurationsdatei und der Quellcode im aktuellen Arbeitsverzeichnis befinden.
Sobald die Images erstellt wurden, können Sie sie in der Compute Engine Image-Seite in der Google Cloud Console ansehen.
Nächste Schritte
- Mehr zum Erstellen von Containern
- Mehr zum Erstellen von
Go-Projekten - Build-Fehler beheben