VM-Images mit Packer erstellen

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 gcloud Befehle 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

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:

  1. Klonen Sie das Repository cloud-builders-community:

    git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
    
  2. Wechseln Sie zum Packer-Builder-Image:

    cd cloud-builders-community/packer
    
  3. Übertragen Sie den Builder in Ihr Projekt:

    gcloud builds submit .
    

Packer-Builder verwenden

  1. Vergewissern Sie sich, dass Sie die Datei packer.json zusammen mit Ihrem Quellcode haben.

  2. Erstellen Sie im Stammverzeichnis des Projekts eine Build-Konfigurationsdatei mit dem Namen cloudbuild.yaml oder cloudbuild.json.

  3. 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.
  4. 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 submit keine 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