Packer adalah alat open source untuk membuat image Mesin Virtual (VM) yang identik untuk beberapa platform dari konfigurasi sumber tunggal. Halaman ini menjelaskan cara menggunakan Packer dan Cloud Build untuk membuat image VM yang akan digunakan di Compute Engine.
Sebelum memulai
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memahami Packer
. Selain itu:
- Siapkan kode sumber Anda termasuk template Packer.
- Jika Anda ingin menggunakan perintah
gcloud
di halaman ini, instal Google Cloud CLI. Mengaktifkan API berikut:
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
Izin IAM yang diperlukan
Untuk menggunakan Packer dengan Cloud Build, berikan peran Admin Instance Compute Engine (
roles/compute.instanceAdmin.v1
) ke akun layanan build Anda.Untuk menyimpan image yang dibuat di Artifact Registry, berikan peran Penulis Artifact Registry (
roles/artifactregistry.writer
) ke akun layanan build Anda.
Membuat image builder Packer
Cloud Build menyediakan
image community builder Packer
yang dapat Anda gunakan untuk memanggil perintah packer
di Cloud Build.
Sebelum menggunakan builder ini dalam file konfigurasi Cloud Build, Anda harus mem-build image dan mengirimkannya ke Artifact Registry:
Clone repositori cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Buka image builder Packer:
cd cloud-builders-community/packer
Kirimkan builder ke project Anda:
gcloud builds submit .
Menggunakan builder Packer
Pastikan Anda memiliki file packer.json beserta kode sumber.
Di direktori root project Anda, buat file konfigurasi build bernama
cloudbuild.yaml
ataucloudbuild.json
.Dalam file konfigurasi build, tambahkan langkah build untuk memanggil perintah
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" ] } ] }
Dengan:
[PROJECT_ID]
adalah Google Cloud project ID Anda.[IMAGE_NAME]
adalah nama image VM yang Anda buat.[IMAGE_FAMILY]
adalah kelompok image dari image VM.[IMAGE_ZONE]
adalah zona image.
Mulai build menggunakan file konfigurasi build:
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Dengan:
[CONFIG_FILE_PATH]
adalah jalur ke file konfigurasi build.[SOURCE_DIRECTORY]
adalah jalur atau URL ke kode sumber.[REGION]
adalah salah satu wilayah build yang didukung.
Jika Anda tidak menentukan
[CONFIG_FILE_PATH]
dan[SOURCE_DIRECTORY]
dalam perintahgcloud builds submit
, Cloud Build mengasumsikan bahwa file konfigurasi dan kode sumber berada di direktori kerja saat ini.
Setelah image dibuat, Anda dapat melihatnya di halaman Image Compute Engine di konsol Google Cloud .
Langkah berikutnya
- Pelajari cara membangun container.
- Pelajari cara membangun project
Go
. - Pelajari cara memecahkan masalah error build.