Creazione di immagini VM tramite Packer

Packer è uno strumento open source per creare immagini di macchine virtuali (VM) identiche per più piattaforme da una singola configurazione di origine. Questa pagina spiega come utilizzare Packer e Cloud Build per creare un'immagine VM da utilizzare su Compute Engine.

Prima di iniziare

Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con Packer. Inoltre:

  • Tieni a portata di mano il codice sorgente, incluso il modello Packer.
  • Se vuoi utilizzare i comandi gcloud in questa pagina, installa Google Cloud CLI.
  • Abilita le seguenti API:

    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
    

Autorizzazioni IAM richieste

Creazione di un'immagine del builder Packer

Cloud Build fornisce un'immagine del builder della community Packer che puoi utilizzare per richiamare i comandi packer in Cloud Build. Prima di utilizzare questo builder in un file di configurazione di Cloud Build, devi creare l'immagine ed eseguirne il push su Artifact Registry:

  1. Clona il repository cloud-builders-community:

    git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
    
  2. Vai all'immagine del builder Packer:

    cd cloud-builders-community/packer
    
  3. Invia il builder al tuo progetto:

    gcloud builds submit .
    

Utilizzo del builder Packer

  1. Assicurati di avere il file packer.json insieme al codice sorgente.

  2. Nella directory principale del progetto, crea un file di configurazione della build denominato cloudbuild.yaml o cloudbuild.json.

  3. Nel file di configurazione della build, aggiungi un passaggio di build per richiamare il comando 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"
           ]
        }
       ]
    }
    

    Dove:

    • [PROJECT_ID] è l'ID progetto Google Cloud .
    • [IMAGE_NAME] è il nome dell'immagine VM che stai creando.
    • [IMAGE_FAMILY] è la famiglia di immagini dell'immagine VM.
    • [IMAGE_ZONE] è la zona dell'immagine.
  4. Avvia la build utilizzando il file di configurazione della build:

    gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
    

    Dove:

    • [CONFIG_FILE_PATH] è il percorso del file di configurazione della build.
    • [SOURCE_DIRECTORY] è il percorso o l'URL del codice sorgente.
    • [REGION] è una delle regioni di build supportate.

    Se non specifichi un [CONFIG_FILE_PATH] e un [SOURCE_DIRECTORY] nel comando gcloud builds submit, Cloud Build presuppone che il file di configurazione e il codice sorgente si trovino nella directory di lavoro corrente.

Una volta create le immagini, puoi visualizzarle nella pagina Immagini di Compute Engine nella console Google Cloud .

Passaggi successivi