Creazione di immagini VM tramite Packer

Packer è un ambiente aperto strumento di origine per creare immagini di macchine virtuali (VM) identiche per più piattaforme da un configurazione di un'unica 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 che include 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

Per utilizzare Packer con Cloud Build, il servizio Cloud Build richiede il ruolo Amministratore istanze Compute Engine. Per concedere il ruolo:

  1. Individua l'account di servizio Cloud Build:

    CLOUD_BUILD_ACCOUNT=$(gcloud projects get-iam-policy $PROJECT --filter="(bindings.role:roles/cloudbuild.builds.builder)"  --flatten="bindings[].members" --format="value(bindings.members[])")
    
  2. Aggiungi il ruolo Amministratore istanze Compute Engine all'account di servizio:

    gcloud projects add-iam-policy-binding $PROJECT \
      --member $CLOUD_BUILD_ACCOUNT \
      --role roles/compute.instanceAdmin
    

Creazione di un'immagine del builder Packer

Cloud Build fornisce Immagine dello strumento per la creazione della community di 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 ed esegui il push dell'immagine 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 di packer:

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

    gcloud builds submit .
    

Utilizzo di Packer Builder

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

  2. Nella directory root 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 del tuo 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 build supportate.

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

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

Passaggi successivi