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
Per utilizzare Packer con Cloud Build, concedi il ruolo Amministratore istanze Compute Engine (
roles/compute.instanceAdmin.v1
) al account di servizio di build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer Artifact Registry (
roles/artifactregistry.writer
) al account di servizio di build.
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:
Clona il repository cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Vai all'immagine del builder Packer:
cd cloud-builders-community/packer
Invia il builder al tuo progetto:
gcloud builds submit .
Utilizzo del builder Packer
Assicurati di avere il file packer.json insieme al codice sorgente.
Nella directory principale del progetto, crea un file di configurazione della build denominato
cloudbuild.yaml
ocloudbuild.json
.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.
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 comandogcloud 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
- Scopri come creare container.
- Scopri come creare progetti
Go
. - Scopri come risolvere gli errori di build.