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 didistribusikan di seluruh zona tertentu.

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

Sebelum memulai

  • Untuk VM dan resource terkait apa pun yang ingin Anda buat, pastikan Anda memiliki kuota yang cukup dan izin yang diperlukan.
  • 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:

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. 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

Peran yang diperlukan

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

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat VM secara massal. Untuk melihat izin yang benar-benar diperlukan, perluas 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 di snapshot
  • Untuk menggunakan template instance untuk membuat VM: compute.instanceTemplates.useReadOnly di template instance
  • Untuk menetapkan jaringan lama ke VM: compute.networks.use pada project
  • Untuk menentukan alamat IP statis untuk VM: compute.addresses.use di project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp di project
  • Untuk menentukan subnet untuk VM Anda: compute.subnetworks.use pada project atau subnet yang dipilih
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp pada project atau di subnet yang dipilih
  • Untuk menetapkan metadata instance VM untuk VM: compute.instances.setMetadata di project
  • Untuk menetapkan tag untuk VM: compute.instances.setTags di VM
  • Untuk menetapkan label 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 di 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 mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Membuat VM secara massal di suatu region

Untuk membuat VM secara massal dalam satu 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-shape=TARGET_SHAPE ]

Ganti kode berikut:

  • NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 yang telah ditentukan untuk dibuat oleh VM. Jika Anda menggunakan flag ini dan menetapkan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • REGION: region untuk membuat VM.

  • COUNT: jumlah VM yang akan dibuat. Jumlah 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 suatu region. Gunakan daftar key-value pair, 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_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 metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    balanced Berupaya mendistribusikan VM secara merata di semua zona dalam region.
    any Mengizinkan 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://www.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_SHAPE"
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project.

  • REGION: region untuk membuat VM.

  • NAME_PATTERN: pola nama untuk VM. Tentukan ini atau perInstanceProperties. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 bawaan untuk dibuat VM. 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. Jumlah 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 melakukannya, nilainya 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 suatu region. Gunakan daftar key-value pair, 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_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 metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Berupaya mendistribusikan VM secara merata di semua zona dalam region.
    ANY Mengizinkan 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 dalam satu 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 (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 yang telah ditentukan untuk dibuat oleh VM. 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. Jumlah 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 dalam satu zona, gunakan metode instances.bulkInsert berikut.

POST https://www.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, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 bawaan untuk dibuat VM. 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. Jumlah 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 melakukannya, nilainya 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 dalam suatu 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 ini:

  • 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-shape=TARGET_SHAPE ]

Ganti kode berikut:

  • NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 yang telah ditentukan untuk dibuat oleh VM. Jika Anda menggunakan flag ini dan menetapkan COUNT, COUNT harus sama dengan jumlah nama yang diberikan.

  • [VM_NAME=HOSTNAME, ...]: daftar key-value pair dari nama bawaan 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. Jumlah 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 suatu region. Gunakan daftar key-value pair, 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_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 metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Berupaya mendistribusikan VM secara merata di semua zona dalam region.
    ANY Mengizinkan 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://www.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_SHAPE"
  ...
}

Ganti kode berikut:

  • PROJECT_ID: ID project.

  • REGION: region untuk membuat VM.

  • NAME_PATTERN: pola nama untuk VM. Tentukan ini atau perInstanceProperties. Gunakan urutan karakter hash (#) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaan vm-# untuk pola nama akan menghasilkan VM dengan nama vm-1, vm-2, dan seterusnya, 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 bawaan untuk dibuat VM. 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 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 khusus 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. Jumlah 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 melakukannya, nilainya 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 disetel Nilai defaultnya adalah COUNT. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan oleh COUNT, permintaan akan gagal dan tidak ada VM yang akan 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 suatu region. Gunakan daftar key-value pair, 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_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 metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya.
    BALANCED Berupaya mendistribusikan VM secara merata di semua zona dalam region.
    ANY Mengizinkan 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 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 compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID

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

GET 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 berikut:
    • CREATING: Pembuatan VM sedang berlangsung
    • ROLLING_BACK: permintaan gagal dan sedang di-roll back
    • DONE: Pembuatan atau rollback VM berhasil diselesaikan
  • targetVmCount: jumlah VM yang akan dibuat di zona yang ditentukan
  • createdVmCount: jumlah VM yang sudah dibuat di zona yang ditentukan
  • failedToCreateVmCount: jumlah VM yang gagal dibuat di zona yang ditentukan
  • deletedVmCount: jumlah VM yang dihapus sebagai bagian dari roll back dari operasi yang gagal

Kolom progress dalam respons menunjukkan 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 yang terjadi.

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://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://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 berhasil dibuat dan operasi selesai 2%.

Operasi tersebut 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 serupa dengan berikut ini:

{
  "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 mengetahui informasi selengkapnya, lihat dokumentasi untuk objek instancesBulkInsertOperationMetadata.

Memeriksa status VM tunggal

Untuk memeriksa status VM tunggal 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 merepresentasikan 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, dan 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 sebagai filter untuk mendapatkan daftar operasi VM yang terkait dengan permintaan regional atau zona:

    • Jika Anda mengirim permintaan regional, gunakan metode globalOperations.aggregatedList untuk melakukan penelusuran di semua operasi dan semua zona dalam project:

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

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
      
  3. Dapatkan properti VM lainnya dengan melakukan salah satu tindakan berikut:

    • Dari daftar operasi, targetLink merepresentasikan 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 di semua zona dan region, serta 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 sekumpulan region. Saat mencoba membuat VM secara massal di satu region dari serangkaian region, permintaan tersebut akan memeriksa kapasitas terlebih dahulu. Jika kapasitas tidak cukup, permintaan akan langsung gagal dan mencoba lagi dengan region berikutnya dalam kumpulan.

  1. Tentukan jumlah VM yang akan dibuat dalam suatu zona.

    nTarget = 1000
    
  2. Tentukan region untuk mencoba membuat VM.

    acceptableRegions = ["us-central1", "us-east1", "us-west1"]
    
  3. Lakukan iterasi melalui 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 tertentu. Saat mencoba membuat VM secara massal pada jenis mesin yang sama, permintaan tersebut 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 yang akan digunakan untuk membuat VM.

    acceptableMachineFamilies = ["n2","c2","e2","n1"]
    
  3. Lakukan iterasi melalui serangkaian jenis mesin dan coba buat VM pada jenis mesin 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 memantau jumlah total VM yang dibuat, region untuk membuat VM, dan variabel untuk menyimpan zona tempat Compute Engine membuat VM.

    nTarget = 10000
    nCreated = 0
    region = "us-central1"
    targetZone = ""
    
  2. Kirim 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. Terus ajukan permintaan untuk membuat hingga 5.000 VM pada satu waktu di zona 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 dibuatnya VM, dan struktur data untuk menyimpan nama VM.

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

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

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

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

Langkah selanjutnya

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