Packer 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.
Hinweise
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
gcloud
-Befehle auf dieser Seite verwenden möchten, installieren Sie die Google Cloud CLI. Aktivieren Sie folgende APIs:
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
Erforderliche IAM-Berechtigungen
Damit Sie Packer mit Cloud Build verwenden können, benötigt das Cloud Build-Dienstkonto die Rolle Compute Engine-Instanzadministrator. So weisen Sie die Rolle zu:
Suchen Sie das Cloud Build-Dienstkonto:
CLOUD_BUILD_ACCOUNT=$(gcloud projects get-iam-policy $PROJECT --filter="(bindings.role:roles/cloudbuild.builds.builder)" --flatten="bindings[].members" --format="value(bindings.members[])")
Fügen Sie dem Dienstkonto die Rolle "Compute Engine-Instanzadministrator" hinzu:
gcloud projects add-iam-policy-binding $PROJECT \ --member $CLOUD_BUILD_ACCOUNT \ --role roles/compute.instanceAdmin
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 die Container Registry in Ihrem Projekt übertragen:
Klonen Sie das Repository cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Wechseln 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.yaml
odercloudbuild.json
.Fügen Sie der Build-Konfigurationsdatei einen Build-Schritt hinzu, um den Befehl
packer build
aufzurufen: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" ] } ] }
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]
Wobei:
[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
[CONFIG_FILE_PATH]
und[SOURCE_DIRECTORY]
im Befehlgcloud builds submit
nicht 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 Google Cloud Console auf der Compute Engine Image-Seite ansehen.
Nächste Schritte
- Mehr zum Erstellen von Containern
- Mehr zum Erstellen von
Go
-Projekten - Build-Fehler beheben