Packer adalah alat open source untuk membuat image Mesin Virtual (VM) yang identik bagi 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 pada 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, akun layanan Cloud Build memerlukan peran Admin Instance Compute Engine. Untuk memberikan peran:
Temukan akun layanan 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[])")
Tambahkan peran Admin Instance Compute Engine ke akun layanan:
gcloud projects add-iam-policy-binding $PROJECT \ --member $CLOUD_BUILD_ACCOUNT \ --role roles/compute.instanceAdmin
Membuat gambar builder Packer
Cloud Build menyediakan image builder komunitas Packer yang dapat Anda gunakan untuk memanggil perintah packer
di Cloud Build.
Sebelum menggunakan builder ini dalam file konfigurasi Cloud Build, Anda harus membangun image dan mengirimkannya ke Container Registry dalam project Anda:
Clone repositori cloud-builders-community:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Buka gambar pembuat Pengemas:
cd cloud-builders-community/packer
Kirim builder ke project Anda:
gcloud builds submit .
Menggunakan builder Pengemas
Pastikan Anda memiliki file packer.json beserta kode sumber.
Di direktori utama project, buat file konfigurasi build dengan nama
cloudbuild.yaml
ataucloudbuild.json
.Di 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 keterangan:
[PROJECT_ID]
adalah ID project Google Cloud Anda.[IMAGE_NAME]
adalah nama image VM yang Anda bangun.[IMAGE_FAMILY]
adalah kelompok gambar image VM.[IMAGE_ZONE]
adalah zona gambar.
Mulai build menggunakan file konfigurasi build:
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
Dengan keterangan:
[CONFIG_FILE_PATH]
adalah jalur ke file konfigurasi build.[SOURCE_DIRECTORY]
adalah jalur atau URL ke kode sumber.[REGION]
adalah salah satu region build yang didukung.
Jika Anda tidak menentukan
[CONFIG_FILE_PATH]
dan[SOURCE_DIRECTORY]
dalam perintahgcloud builds submit
, Cloud Build akan menganggap file konfigurasi dan kode sumber berada di direktori kerja saat ini.
Setelah gambar dibuat, Anda dapat melihatnya di halaman Image Compute Engine di Konsol Google Cloud.
Langkah selanjutnya
- Pelajari cara membangun container.
- Pelajari cara membuat project
Go
. - Pelajari cara memecahkan masalah error build.