Membuat VM secara massal


Jika Anda ingin membuat instance mesin virtual (VM) yang identik dan independen dari satu sama lain dalam jumlah besar, buat VM secara massal menggunakan Google Cloud CLI atau Compute Engine API. Anda dapat membuat VM ini di semua zona dalam satu region atau mendistribusikannya di zona tertentu.

Untuk mengetahui detail selengkapnya dan batasan-batasan terkait, lihat Tentang pembuatan VM secara massal.

Sebelum memulai

  • Untuk VM dan resource terkait yang ingin Anda buat, pastikan Anda memiliki kuota yang cukup dan izin yang diperlukan.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat VM secara massal, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) di project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat VM secara massal. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat VM secara massal:

  • compute.instances.create pada project
  • Untuk menggunakan image kustom guna membuat VM: compute.images.useReadOnly pada image
  • Untuk menggunakan snapshot guna membuat VM: compute.snapshots.useReadOnly pada snapshot
  • Untuk menggunakan template instance guna membuat VM: compute.instanceTemplates.useReadOnly pada template instance
  • Untuk menetapkan jaringan lama ke VM: compute.networks.use pada project
  • Untuk menentukan alamat IP statis untuk VM: compute.addresses.use pada project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp di project
  • Untuk menentukan subnet bagi VM Anda: compute.subnetworks.use di project atau di subnet yang dipilih
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp di project atau di subnet yang dipilih
  • Untuk menetapkan metadata instance VM untuk VM: compute.instances.setMetadata pada project
  • Untuk menetapkan tag untuk VM: compute.instances.setTags di VM
  • Untuk menetapkan label untuk VM: compute.instances.setLabels di VM
  • Untuk menetapkan akun layanan yang akan digunakan VM: compute.instances.setServiceAccount di VM
  • Untuk membuat disk baru bagi VM: compute.disks.create pada project
  • Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis: compute.disks.use pada disk
  • Untuk memasang disk yang ada dalam mode hanya baca: compute.disks.useReadOnly pada disk

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat VM secara massal di suatu region

Untuk membuat VM secara massal di region, gunakan gcloud CLI atau Compute Engine API.

Jika Anda menentukan sendiri jenis mesin atau dukungan untuk hardware tambahan seperti GPU atau SSD lokal, Compute Engine akan menempatkan VM di zona dalam region yang mendukung jenis mesin dan hardware tambahan tersebut.

gcloud

Untuk membuat VM secara massal di suatu region, gunakan perintah gcloud compute instances bulk create berikut:

gcloud compute instances bulk create \
    ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \
    --region=REGION \
    --count=COUNT \
    [ --min-count=MIN_COUNT \ ]
    [--location-policy=LOCATION_POLICY \ ]
    [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]

Ganti kode berikut:

  • NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (#) agar Compute Engine dapat menggantinya dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAMES: daftar nama standar untuk VM yang akan dibuat. Jika Anda menggunakan flag ini dan menetapkan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • REGION: region tempat VM dibuat.

  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan --predefined-names, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
  • LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam region. Gunakan daftar pasangan nilai kunci, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah allow, yang merupakan default, dan deny. Berikut adalah contoh nilai untuk flag ini:

    --location-policy=us-east1-b=allow,us-east1-c=deny
    
  • TARGET_DISTRIBUTION_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan flag --location-policy untuk menetapkan zona. Tabel berikut menunjukkan nilai yang valid untuk flag ini:

    Nilai Deskripsi
    ANY_SINGLE_ZONE Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Mencoba mendistribusikan VM secara merata di semua zona dalam region.
    ANY Memungkinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.

REST

Untuk membuat VM secara massal di suatu region, gunakan metode instances.bulkInsert berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert

{
  ...
  "namePattern": "NAME_PATTERN",
  "perInstanceProperties": {
    "PREDEFINED_NAME_1": {},
    "PREDEFINED_NAME_2": {},
    ...
  },
  "count": COUNT,
  "minCount": MIN_COUNT,
  "locationPolicy": {
    "LOCATION_POLICY"
    },
    "targetShape": "TARGET_DISTRIBUTION_SHAPE"
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project.

  • REGION: region tempat VM dibuat.

  • NAME_PATTERN: pola nama untuk VM. Tentukan ini atau perInstanceProperties. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama standar untuk VM yang akan dibuat. Tentukan ini atau namePattern. Jika menggunakan flag ini dan menentukan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan perInstanceProperties, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
  • LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam region. Gunakan daftar pasangan nilai kunci, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah ALLOW, yang merupakan default, dan DENY. Berikut adalah contoh nilai untuk kolom ini:

    "locations": {
      "zones/us-central1-a": { "preference": "ALLOW" },
      "zones/us-central1-c": { "preference": "DENY"  },
      ...
    },
    
  • TARGET_DISTRIBUTION_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom locationPolicy untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:

    Nilai Deskripsi
    ANY_SINGLE_ZONE Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Mencoba mendistribusikan VM secara merata di semua zona dalam region.
    ANY Memungkinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.

Membuat VM secara massal dalam satu zona

Untuk membuat VM secara massal di zona, gunakan gcloud CLI atau Compute Engine API.

gcloud

Untuk membuat VM secara massal di zona tertentu, gunakan perintah gcloud compute instances bulk create berikut.

gcloud compute instances bulk create \
    ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \
    --zone=ZONE \
    --count=COUNT \
    [ --min-count=MIN_COUNT ]

Ganti kode berikut:

  • NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (#) agar Compute Engine dapat menggantinya dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAMES: daftar nama standar untuk VM yang akan dibuat. Jika Anda menggunakan flag ini dan menetapkan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • ZONE: zona tempat VM dibuat.

  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan --predefined-names, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.

REST

Untuk membuat VM secara massal di zona, gunakan metode instances.bulkInsert berikut.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  ...
  "namePattern": "NAME_PATTERN",
  "perInstanceProperties": {
    "PREDEFINED_NAME_1": {},
    "PREDEFINED_NAME_2": {},
    ...
  },
  "count": COUNT,
  "minCount": MIN_COUNT,
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project.

  • ZONE: zona tempat VM dibuat.

  • NAME_PATTERN: pola nama untuk VM. Tentukan ini atau perInstanceProperties. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama standar untuk VM yang akan dibuat. Tentukan ini atau namePattern. Jika menggunakan flag ini dan menentukan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan perInstanceProperties, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.

Membuat VM dengan nama host kustom secara massal

Anda dapat membuat VM dengan nama host kustom secara massal di region atau zona menggunakan gcloud CLI atau Compute Engine API.

Anda harus mengonfigurasi data DNS secara manual untuk nama host kustom. Untuk mengetahui informasi selengkapnya, lihat batasan-batasan.

Jika Anda tidak menentukan nama host, Compute Engine akan menetapkan nama host untuk VM sebagai salah satu dari berikut:

  • VM_NAME.c.PROJECT_ID.internal saat Anda mengaktifkan DNS global
  • VM_NAME.ZONE.c.PROJECT_ID.internal saat Anda mengaktifkan DNS zona

Untuk mengetahui informasi selengkapnya, lihat nama DNS internal.

gcloud

Untuk membuat VM secara massal dengan nama host kustom di region tertentu, gunakan perintah gcloud beta compute instances bulk create berikut.

gcloud beta compute instances bulk create \
    ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \
    --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \
    --zone=REGION \
    --count=COUNT \
    [ --min-count=MIN_COUNT ]
    [--location-policy=LOCATION_POLICY \ ]
    [--target-distribution-shape=TARGET_DISTRIBUTION_SHAPE ]

Ganti kode berikut:

  • NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (#) agar Compute Engine dapat menggantinya dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAMES: daftar nama standar untuk VM yang akan dibuat. Jika Anda menggunakan flag ini dan menetapkan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • [VM_NAME=HOSTNAME, ...]: daftar key-value pair nama standar untuk VM dan nama host domain yang sepenuhnya memenuhi syarat yang ingin Anda tetapkan untuk VM. Nama host kustom harus sesuai dengan persyaratan RFC 1035 untuk nama host yang valid.

  • REGION: zona tempat VM dibuat.

  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan --predefined-names, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
  • LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam region. Gunakan daftar pasangan nilai kunci, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah ALLOW, yang merupakan default, dan DENY. Berikut adalah contoh nilai untuk kolom ini:

    "locations": {
      "zones/us-central1-a": { "preference": "ALLOW" },
      "zones/us-central1-c": { "preference": "DENY"  },
      ...
    },
    
  • TARGET_DISTRIBUTION_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom locationPolicy untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:

    Nilai Deskripsi
    ANY_SINGLE_ZONE Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Mencoba mendistribusikan VM secara merata di semua zona dalam region.
    ANY Memungkinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.

REST

Untuk membuat VM dengan nama host kustom secara massal di region tertentu, gunakan metode instances.bulkInsert berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert

{
  ...
  "namePattern": "NAME_PATTERN",
  "perInstanceProperties": {
    "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1},
    "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2},
    ...
  },
  "count": COUNT,
  "minCount": MIN_COUNT,
  "locationPolicy": {
    "LOCATION_POLICY"
    },
    "targetShape": "TARGET_DISTRIBUTION_SHAPE"
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project.

  • REGION: region tempat VM dibuat.

  • NAME_PATTERN: pola nama untuk VM. Tentukan ini atau perInstanceProperties. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, menggunakan vm-# untuk pola nama akan menghasilkan VM dengan nama seperti vm-1 dan vm-2, hingga jumlah VM yang ditentukan oleh --count, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.

    Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.

  • PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama standar untuk VM yang akan dibuat. Tentukan ini atau namePattern. Jika menggunakan flag ini dan menentukan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • HOSTNAME_1, HOSTNAME_2, ...: nama host domain yang sepenuhnya memenuhi syarat (FQDN) yang ingin Anda tetapkan untuk VM. Nama host kustom harus sesuai dengan persyaratan RFC 1035 untuk nama host yang valid.

    Misalnya, untuk membuat dua VM vm-1 dan vm-2 dengan nama host kustom my-host1234.example.com dan test.example.com, tentukan properti hostname di perInstanceProperties sebagai berikut:

    {
    ...
    "perInstanceProperties": {
    "vm-1": { "hostname": "my-host1234.example.com" },
    "vm-2": { "hostname": "test.example.com" },
    ...
    },
    
  • COUNT: jumlah VM yang akan dibuat. Nilai ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh NAME_PATTERN. Atau, jika menggunakan perInstanceProperties, Anda tidak perlu menentukan COUNT, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.

  • MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan, bergantung pada cara Anda menetapkan tanda ini:

    Nilai Deskripsi
    Belum ditetapkan Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang dibuat.
    1 Compute Engine membuat VM sebanyak mungkin, hingga COUNT.
    Lebih dari 1 dan kurang dari COUNT Compute Engine membuat minimal MIN_COUNT VM hingga maksimum COUNT VM. Jika MIN_COUNT VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
  • LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam region. Gunakan daftar pasangan nilai kunci, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah ALLOW, yang merupakan default, dan DENY. Berikut adalah contoh nilai untuk kolom ini:

    "locations": {
      "zones/us-central1-a": { "preference": "ALLOW" },
      "zones/us-central1-c": { "preference": "DENY"  },
      ...
    },
    
  • TARGET_DISTRIBUTION_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom locationPolicy untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:

    Nilai Deskripsi
    ANY_SINGLE_ZONE Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Mencoba mendistribusikan VM secara merata di semua zona dalam region.
    ANY Memungkinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.

Memeriksa status permintaan untuk membuat VM secara massal

Saat Anda membuat permintaan mutasi, Compute Engine akan menampilkan resource operation yang dapat Anda polling untuk mendapatkan status operasi. Untuk mengetahui informasi selengkapnya, lihat Menangani respons API.

Untuk mendapatkan status permintaan penyisipan massal, kirim permintaan GET HTTP ke resource operation:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID

Untuk mendapatkan status permintaan penyisipan massal regional, kirim permintaan berikut:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID

Ganti kode berikut:

  • PROJECT_ID: ID project tempat Anda membuat VM
  • REGION: region tempat Anda membuat VM
  • ZONE: zona tempat Anda membuat VM
  • OPERATION_ID: ID operasi penyisipan massal

Objek instancesBulkInsertOperationMetadata dalam respons berisi detail operasi berikut:

  • status: statusnya adalah salah satu dari hal berikut:
    • CREATING: Pembuatan VM sedang berlangsung
    • ROLLING_BACK: permintaan gagal dan di-roll back
    • DONE: Pembuatan atau rollback VM telah berhasil selesai
  • targetVmCount: jumlah VM yang akan dibuat di zona yang ditentukan
  • createdVmCount: jumlah VM yang telah dibuat di zona yang ditentukan
  • failedToCreateVmCount: jumlah VM yang gagal dibuat di zona yang ditentukan
  • deletedVmCount: jumlah VM yang dihapus sebagai bagian dari rollback operasi yang gagal

Kolom progress dalam respons mewakili persentase penyelesaian operasi.

Status operasi penyisipan massal adalah RUNNING hingga Compute Engine berhasil membuat setidaknya jumlah minimum VM dan tidak ada lagi pembuatan atau rollback permintaan VM ini.

Saat operasi penyisipan massal sedang berlangsung, Anda akan melihat respons yang mirip dengan berikut ini:

{
  "kind" : "compute#operation",
  "id": "4653028658507445766",
  "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
  "operationType": "bulkInsert",
  "targetLink":  "https://www.googleapis.com/compute/v1/projects/my-project"
  "targetId": 4653028658507445766,
  "status": "RUNNING",
  "progress": 2,
  "user": "example@google.com",
  "insertTime": "2023-04-23T09:57:13.474-07:00",
  "startTime": "2023-04-23T09:57:13.474-07:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
  "operationGroupId": "4653028658507445766",
  "metadata":
    "instances_bulk_insert_operation_metadata": {
      "per_location_status": {
         "zones/us-central1-a": {
           "status": "CREATING",
           "targetVmCount": 50,
           "createdVmCount": 1
         }
      }
    }
}

Dalam contoh ini, satu instance telah berhasil dibuat dan operasinya telah selesai 2%.

Operasi akan menampilkan status DONE saat Compute Engine berhasil membuat setidaknya jumlah minimum VM yang ditentukan oleh minCount, atau saat Compute Engine menyelesaikan rollback permintaan. Setelah berhasil membuat jumlah VM yang diminta, Anda akan mendapatkan respons yang mirip dengan berikut:

{
  "endTime": "2023-04-23T09:58:13.474-07:00",
  "id": "5053101474378293244",
  "insertTime": "2023-04-23T09:57:13.474-07:00",
  "instancesBulkInsertOperationMetadata": {
    "perLocationStatus": {
      "zones/us-central1-a": {
        "status": "DONE",
        "createdVmCount": 50,
        "targetVmCount": 50
      }
    }
  },
  "kind": "compute#operation",
  "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
  "operationGroupId": "4653028658507445766",
  "operationType": "bulkInsert",
  "progress": 100,
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
  "startTime": "2023-09-11T16:21:55.629-07:00",
  "status": "DONE",
  "targetId": "625521788110",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project",
  "user": "example@google.com",
  "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a"
}

Untuk informasi selengkapnya, lihat dokumentasi untuk objek instancesBulkInsertOperationMetadata.

Memeriksa status VM tunggal

Untuk memeriksa status satu VM yang dibuat dari permintaan untuk membuat VM secara massal, gunakan gcloud CLI atau Compute Engine API.

gcloud

  1. Dari Operation yang ditampilkan oleh permintaan, dapatkan nilai properti operationGroupId.

  2. Gunakan properti operationGroupId sebagai filter dengan perintah gcloud compute operations list untuk menelusuri VM yang terkait dengan permintaan regional atau zona di semua operasi dan semua zona dalam project untuk VM yang terkait dengan permintaan regional atau zona:

    gcloud compute operations list \
       --filter=(operationGroupId=OPERATION_GROUP_ID)
    
  3. Dapatkan properti VM lainnya dengan melakukan salah satu tindakan berikut:

    • Dari daftar operasi, targetLink mewakili jalur VM. Gunakan perintah gcloud compute instances describe dengan jalur ini sebagai nama VM untuk mendapatkan properti VM:

      gcloud compute instances describe VM_NAME
      
    • Gunakan perintah gcloud compute instances list dengan filter yang menyertakan nama VM dari daftar operasi:

      gcloud compute instances list VM_NAME \
         --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      
    • Gunakan perintah gcloud compute instances list untuk mendapatkan properti VM dari semua zona dan region, lalu filter menurut label yang unik untuk instance atau menurut namanya:

      gcloud compute instances list \
         --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      

REST

  1. Dari Operation yang ditampilkan oleh permintaan, dapatkan nilai properti operationGroupId.

  2. Gunakan properti operationGroupId untuk mendapatkan daftar operasi VM yang terkait dengan permintaan regional atau zona:

    • Jika Anda mengirim permintaan regional, untuk menelusuri semua operasi dan semua zona dalam project, gunakan metode globalOperations.aggregatedList dan sertakan properti operationGroupId sebagai filter:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
      
    • Jika Anda mengirim permintaan zonal, untuk mencantumkan operasi di zona tersebut, gunakan metode zoneOperations.get dan sertakan properti operationGroupId dalam isi permintaan:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert
      
      {
      ...
      "operationGroupId":"OPERATION_GROUP_ID"
      ...
      }
      
  3. Dapatkan properti VM lainnya dengan melakukan salah satu tindakan berikut:

    • Dari daftar operasi, targetLink mewakili jalur VM. Gunakan metode instances.get dengan jalur ini sebagai nama VM untuk mendapatkan semua properti VM:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
      
    • Gunakan metode instances.get dengan filter yang menyertakan nama VM dari daftar operasi:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      
    • Gunakan metode instances.aggregatedList untuk mendapatkan properti VM dari semua zona dan region, dan filter menurut label yang unik untuk instance atau menurut namanya:

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
      

Contoh kode semu

Contoh kode semu berikut menunjukkan cara menyesuaikan permintaan untuk membuat VM secara massal.

Membuat VM secara massal di satu region dari kumpulan region

Kode semu berikut menjelaskan cara membuat 1.000 VM di satu region dari kumpulan region. Saat mencoba membuat VM secara massal di satu region dari kumpulan region, permintaan akan memeriksa kapasitas terlebih dahulu. Jika kapasitas tidak memadai, permintaan akan langsung gagal dan mencoba lagi dengan region berikutnya dalam set.

  1. Tentukan jumlah VM yang akan dibuat dalam zona.

    nTarget = 1000
    
  2. Tentukan region tempat Anda akan mencoba membuat VM.

    acceptableRegions = ["us-central1", "us-east1", "us-west1"]
    
  3. Lakukan iterasi di seluruh region, dan coba buat VM di setiap region hingga berhasil.

    for region in acceptableRegions:
      call bulk API: region=region, location-policy=location-policy, count=nTarget
      if request succeeds and the operation succeeds:
        break
    

Membuat VM secara massal di satu zona pada jenis mesin

Kode semu berikut menjelaskan cara membuat beberapa VM di zona pada jenis mesin yang ditentukan. Saat mencoba membuat VM secara massal pada jenis mesin yang sama, permintaan akan memeriksa ketersediaan jenis mesin tersebut terlebih dahulu. Jika jumlah jenis mesin tidak cukup, permintaan akan langsung gagal dan mencoba lagi dengan jenis mesin berikutnya.

  1. Tentukan jumlah VM yang akan dibuat dan region tempat VM akan dibuat.

    nTarget = 1000
    region = "us-central1"
    
  2. Tentukan kelompok mesin tempat Anda akan mencoba membuat VM.

    acceptableMachineFamilies = ["n2","c2","e2","n1"]
    
  3. Lakukan iterasi pada kumpulan jenis mesin dan coba buat VM pada jenis mesin tersebut hingga berhasil.

    for family in acceptableMachineFamilies:
      call bulk APIs: region=region, count=nTarget, machineFamily=family
      if request succeeds and the operation succeeds:
        break
    

Membuat lebih dari 5.000 VM dalam satu zona

Saat membuat VM secara massal, Anda hanya dapat membuat 5.000 VM pada setiap permintaan. Kode semu berikut menjelaskan cara membuat lebih dari 5.000 VM di satu zona dengan membuat beberapa permintaan.

  1. Tentukan jumlah VM yang akan dibuat, penghitung untuk melacak jumlah VM yang dibuat, region tempat VM akan dibuat, dan variabel untuk menyimpan zona tempat Compute Engine membuat VM.

    nTarget = 10000
    nCreated = 0
    region = "us-central1"
    targetZone = ""
    
  2. Buat permintaan awal untuk membuat 5.000 VM, simpan zona yang ditampilkan oleh permintaan, dan perbarui penghitung jumlah VM yang dibuat.

    call bulk API: region=region, count=5000
    targetZone = zone chosen by bulk API
    nCreated += # of VMs created
    
  3. Lanjutkan membuat permintaan untuk membuat hingga 5.000 VM sekaligus di zona tersebut hingga Compute Engine membuat jumlah VM yang ditentukan.

    while(nTarget - nCreated > 0):
      call bulk API: zone=targetZone, count=5000
      nCreated += # of VMs created
    

Membuat VM secara massal dan melihat statusnya

Prosedur berikut menunjukkan cara membuat grup VM dengan nama bawaan, lalu melihat statusnya:

  1. Tentukan jumlah VM yang akan dibuat, zona tempat VM akan dibuat, dan struktur data untuk menyimpan nama.

    nTarget = 1000
    targetZone = "us-central-1a"
    names = []
    
  2. Buat nama berpola untuk VM dan tambahkan nama ke struktur data.

    for n in range(0, 1000):
      names.push("instance-%d".format(n))
    
  3. Buat VM, dan gunakan perInstanceProperties untuk menentukan nama.

    call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
    
  4. Dapatkan detail VM menggunakan metode instances.list dengan filter untuk nama VM yang akan menampilkan detailnya.

    instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
    

Langkah berikutnya

Setelah membuat VM secara massal, lakukan salah satu atau kedua tindakan berikut untuk menyederhanakan pengelolaan VM tersebut: