Creazione di immagini VM tramite Packer

Packer è uno strumento open source per la creazione di 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 dimestichezza con Packer. Inoltre:

  • Tieni a portata di mano il codice sorgente, incluso il modello di 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 generatore 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 in Container Registry nel tuo progetto:

  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 generatore al progetto:

    gcloud builds submit .
    

Utilizzare lo strumento per la creazione di pacchetti

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

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

  3. Nel file di configurazione di compilazione, aggiungi un passaggio di compilazione 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 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 compilazione supportate.

    Se non specifichi [CONFIG_FILE_PATH] e [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 Compute Engine nella console Google Cloud .

Passaggi successivi