Setelah membuat image mesin, Anda dapat menggunakannya untuk membuat salinan instance VM sumber. Untuk mengetahui informasi selengkapnya tentang penggunaan image mesin, lihat kapan harus menggunakan image mesin.
Image mesin berisi sebagian besar informasi dan data yang diperlukan untuk cloning instance.
Image mesin tidak dapat diubah. Namun, Anda dapat mengganti hampir semua properti image mesin saat membuat instance dari image mesin.
Anda dapat membuat instance dari image mesin menggunakan Google Cloud Console, Google Cloud CLI, atau REST.
Sebelum memulai
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
Pembatasan
Batasan berikut berlaku saat Anda membuat VM dari image mesin:
Anda dapat membuat maksimal 6 VM dari image mesin sumber dalam 60 menit. Jika Anda melebihi batas ini, operasi pembuatan instance akan gagal dan menampilkan error seperti berikut:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Untuk membuat lebih banyak VM dari batas yang ditetapkan (6 VM dalam 60 menit), buat image mesin tambahan dari VM sumber atau buat image mesin berumur singkat dari VM baru. Anda kemudian dapat membuat sejumlah VM yang diperlukan dari image mesin baru.
Anda tidak dapat membuat VM dari image mesin dengan persistent disk regional yang terpasang menggunakan Konsol Google Cloud. Gunakan Google Cloud CLI atau REST dan tentukan parameter
replicaZones
dandeviceName
untuk setiap persistent disk regional yang terpasang. Untuk mengetahui informasi selengkapnya, lihat Membuat VM dari image mesin dengan penggantian properti.
Membuat VM dari image mesin (tanpa penggantian)
Jika Anda ingin membuat VM yang sepenuhnya didasarkan pada image mesin tanpa perubahan pada propertinya, gunakan metode ini.
Konsol
Di konsol Google Cloud, buka halaman Create an instance.
Klik Instance VM baru dari image mesin.
Pilih image mesin, lalu klik Continue.
Opsional: Sesuaikan detail VM.
Klik Create.
gcloud
Gunakan
perintah gcloud compute instances create
untuk membuat instance dari image mesin.
gcloud compute instances create VM_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Ganti kode berikut:
VM_NAME
: nama VM yang akan dibuat.ZONE
: zona untuk VM.SOURCE_MACHINE_IMAGE_NAME
: image mesin yang akan digunakan untuk membuat VM.
Contoh
Misalnya, Anda dapat menggunakan perintah gcloud
berikut untuk membuat VM
bernama my-instance
di zona us-east1-b
, dari image mesin yang disebut
my-machine-image
.
gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Setelah VM dibuat, outputnya akan terlihat seperti berikut:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
Di API, buat permintaan POST
ke metode instances.insert
.
Dalam isi permintaan, sertakan parameter berikut:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Ganti kode berikut:
PROJECT_ID
: Project ID Anda..ZONE
: zona untuk VM.VM_NAME
: nama VM yang akan dibuat.SOURCE_MACHINE_IMAGE_URL
: URL lengkap atau sebagian dari image mesin yang ingin Anda gunakan untuk membuat VM. Misalnya, jika Anda memiliki image mesin bernamamy-machine-image
dalam project bernamamyProject
. URL berikut valid:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
Membuat VM dari image mesin dengan penggantian properti
Jika Anda ingin membuat VM yang utamanya berdasarkan image mesin tetapi dengan beberapa perubahan, Anda dapat menggunakan perilaku penggantian. Untuk menggunakan perilaku penggantian, Anda meneruskan atribut untuk mengganti properti image mesin yang ada saat membuat instance.
Saat Anda menggunakan fitur penggantian, pertimbangkan hal-hal berikut:
- Anda tidak dapat mengganti properti disk yang terpasang selain nama disk saat membuat VM dari image mesin.
Anda harus menentukan parameter
replicaZones
untuk setiap persistent disk regional yang terpasang besertadeviceName
disk regional dari image mesin.Jika VM sumber yang digunakan untuk membuat image mesin dan VM baru termasuk dalam project dan region yang sama, hal berikut akan berlaku:
- Sebagian besar properti instance sumber dan VM baru sama. Properti yang berbeda adalah seperti alamat IP sementara yang ditetapkan secara otomatis.
- Jika instance VM sumber masih ada saat Anda membuat VM baru, VM baru tersebut tidak dapat menggunakan nama dan zona yang sama dengan instance sumber.
Jika VM sumber yang digunakan untuk membuat image mesin dan VM baru berada dalam project yang sama tetapi berbeda region, hal berikut akan berlaku:
- Anda harus mengganti semua resource zona dan regional untuk VM baru. Misalnya, jika membuat instance VM dari image mesin yang instance sumbernya berada di region berbeda, Anda perlu mengganti resource regional seperti subnetwork dan aturan firewall regional. Namun, resource global seperti load balancer dan akun layanan tidak memerlukan penggantian, kecuali jika Anda ingin mengubahnya.
Konsol
Di konsol Google Cloud, buka halaman Create an instance.
Klik Instance VM baru dari image mesin.
Pilih image mesin, lalu klik Continue.
Opsional: Sesuaikan detail VM.
Klik Create.
Untuk detail penyiapan selengkapnya, baca artikel Membuat instance VM dari image.
gcloud
Gunakan
perintah gcloud compute instances create
untuk membuat instance dari image mesin dan menambahkan properti
yang ingin Anda ganti.
Misalnya, Anda dapat menggunakan perintah gcloud
berikut untuk membuat VM
bernama my-instance
di zona us-east1-b
, dari image mesin yang disebut
my-machine-image
. Dalam contoh ini, penggantian diterapkan untuk mengubah
jenis mesin, menghentikan kebijakan pemeliharaan host, dan mengonfigurasi persistent disk
regional dengan nama regional-disk-0
.
gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Untuk mengganti properti image mesin selama pembuatan VM, gunakan
instances.insert()
API dan berikan kolom apa pun yang ingin diganti dalam
isi permintaan.
Di API, buat permintaan POST
ke
metode instances.insert
.
Dalam isi permintaan, sertakan parameter sourceMachineImage
dan
penggantian yang Anda perlukan. Anda dapat menambahkan properti apa pun yang biasanya ditetapkan selama pembuatan instance.
Misalnya, untuk mengubah jenis mesin, panggilan API Anda akan menyertakan parameter machineType
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Ganti kode berikut:
PROJECT_ID
: ID project.ZONE
: zona untuk VM.VM_NAME
: nama VM yang akan dibuat.NEW_MACHINE_TYPE
: jenis mesin yang ingin Anda gunakan untuk VM.SOURCE_MACHINE_IMAGE_URL
: URL lengkap atau sebagian dari image mesin yang ingin Anda gunakan untuk membuat instance. Misalnya, jika Anda memiliki image mesin bernamamy-machine-image
dalam project bernamamyProject
. URL berikut valid:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
Perilaku penggantian
Perilaku penggantian dalam API mengikuti aturan patch penggabungan JSON, yang dijelaskan oleh RFC 7396. Singkatnya, aturan berikut berlaku:
- Jika Anda mengganti kolom dasar, kolom dasar yang terkait
pada image mesin akan diganti dengan nilai kolom dasar
dalam permintaan. Kolom dasar mencakup parameter seperti
machineType
danname
. - Jika Anda mengganti kolom berulang, semua nilai berulang untuk properti tersebut akan diganti dengan nilai yang sesuai yang diberikan dalam permintaan.
Kolom berulang umumnya merupakan properti dari jenis
list
. Misalnya,disks
dannetworkInterfaces
adalah kolom berulang. - Jika Anda mengganti
nested object
, objek dalam image mesin akan digabungkan dengan spesifikasi objek yang sesuai dalam permintaan. Perlu diketahui bahwa jika objek bertingkat berada dalam kolom berulang, kolom tersebut akan diperlakukan sesuai dengan aturan untuk kolom berulang. Label adalah pengecualian untuk aturan ini, dan diperlakukan sebagai kolom berulang meskipun label adalah jenisobject
.
Misalnya, jika Anda ingin membuat VM dari image mesin, dan membuat persistent disk regional dengan VM, gunakan penggantian untuk disk tersebut sehingga Anda dapat menentukan opsi replicaZones
. Karena kolom disks
adalah kolom berulang, Anda harus menentukan konfigurasi disk untuk semua
disk yang terpasang dan boot disk, bukan hanya disk regional.
POST /compute/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
Membuat VM menggunakan image mesin dari project berbeda
Saat membuat VM menggunakan image mesin dari project lain, Anda mungkin tidak memiliki akses ke akun layanan yang terkait dengan project sumber tersebut. Jika ingin membuat VM dari image mesin yang terletak di project berbeda, pastikan Anda memiliki akses ke image mesin dan mengganti properti akun layanan pada VM baru.
Bagian berikut menguraikan cara membuat VM dari image mesin yang terletak di project yang berbeda menggunakan Google Cloud CLI.
Berikan akses ke image mesin yang disimpan di project lain.
Izin dapat diberikan pada project sumber atau image mesin. Gunakan perintah
gcloud compute machine-images add-iam-policy-binding
untuk memberikan izin pada image mesin.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Ganti kode berikut:
MACHINE_IMAGE_PROJECT
: project ID untuk project yang berisi image mesin sumber.MACHINE_IMAGE_NAME
: nama image mesin yang ingin Anda tambahkan binding izin.ACCOUNT_EMAIL
: alamat emailserviceAccount
atauuser
yang membuat VM. Pastikan email diformat untuk menyertakan awalan yang diperlukan, dan awalan tersebut harus salah satu dari berikut ini:user:
tentukan hal ini jika alamat email dikaitkan dengan akun pengguna. Contoh:user:user@example.com
.serviceAccount:
tentukan ini jika alamat email dikaitkan dengan akun layanan. Contoh:serviceAccount:123456789000-compute@developer.gserviceaccount.com
.
Contoh
Misalnya, untuk menambahkan binding
compute.admin
ke image mesin yang bernamamy-machine-image
ke email akun layanan123456789000-compute@developer.gserviceaccount.com
, gunakan perintahgcloud
berikut:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Berikan peran Service Account User (
roles/iam.serviceAccountUser
) kepada pengguna yang menjalankan perintahgcloud compute instances create
di akun layanan yang terkait dengan image mesin.Gunakan perintah
gcloud compute instances create
untuk membuat VM dari image mesin.gcloud compute instances create VM_NAME \ --project=VM_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL
Ganti kode berikut:
VM_PROJECT_ID
: project ID untuk project tempat Anda ingin membuat VM.VM_NAME
: nama VM yang akan dibuat.ZONE
: zona untuk VM.MACHINE_IMAGE_PROJECT
: project ID project tempat image mesin berada.MACHINE_IMAGE_NAME
: image mesin yang akan digunakan untuk membuat VM.SERVICE_ACCOUNT_EMAIL
: alamat email akun layanan yang ingin disertakan ke VM Anda.Contoh
Misalnya, perintah berikut akan membuat VM bernama
my-instance
divm-project
, dalam zonaus-east1-b
, dari image mesin yang disebutmy-machine-image
.Flag
--service-account
menentukan akun layanan yang ingin dilampirkan ke VM yang baru dibuat. Jika flag ini tidak diberikan, akun layanan sumber tidak dapat dibagikan di kedua project dan operasi akan gagal.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Setelah VM dibuat, outputnya akan terlihat seperti berikut:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
Apa langkah selanjutnya?
- Pelajari image mesin lebih lanjut
- Pelajari cara membuat instance VM lebih lanjut