Menetapkan dan menghapus metadata kustom


Setiap entri metadata disimpan di server metadata sebagai key-value pair. Kunci metadata peka huruf besar/kecil. Kunci Anda dapat berupa kunci metadata yang telah ditetapkan atau kunci metadata kustom.

Dengan metadata kustom, Anda dapat membuat dan menggunakan key-value pair metadata Anda sendiri pada setiap VM atau project. Anda dapat menambahkan kunci metadata kustom yang baru, memperbarui nilai kunci yang ada, dan menghapus entri metadata kustom apa pun saat Anda tidak membutuhkannya. Menyetel metadata kustom berguna untuk meneruskan nilai arbitrer ke VM dalam suatu project. Hal ini juga berguna untuk membuat skrip startup dan shutdown.

Dokumen ini memberikan informasi tentang cara melakukan hal berikut:

Sebelum memulai

  • Tinjau dasar-dasar cara metadata VM untuk Compute Engine ditentukan, dikategorikan, dan diatur. Untuk mengetahui informasi lebih lanjut, baca artikel Tentang metadata VM.
  • 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

    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 menetapkan atau menghapus metadata kustom pada VM, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menetapkan atau menghapus metadata kustom pada VM. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menetapkan atau menghapus metadata kustom pada VM:

  • Jika VM Anda menggunakan akun layanan: iam.serviceAccounts.actAs di akun layanan atau project
  • Untuk menambahkan, memperbarui, atau menghapus metadata kustom tingkat project:
    • compute.projects.get pada project
    • compute.projects.setCommonInstanceMetadata pada project
  • Untuk menambahkan, memperbarui, atau menghapus metadata zona project kustom:
    • compute.instanceSettings.get di setelan instance di zona yang diperlukan dalam project
    • compute.instanceSettings.update di setelan instance di zona yang diperlukan dalam project
  • Untuk menambahkan, mengupdate, atau menghapus metadata instance kustom:
    • compute.instances.get di VM
    • compute.instances.setMetadata di VM

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Batasan

Compute Engine menerapkan batas total gabungan sebesar 512 KB untuk semua entri metadata. Batas ukuran maksimum juga diterapkan untuk setiap key dan value dengan cara berikut:

  • Setiap metadata key memiliki batas maksimum 128 byte.
  • Setiap metadata key peka huruf besar/kecil.

    Untuk metadata zona project, Compute Engine tidak mengizinkan Anda membuat dua kunci metadata terpisah dengan string yang sama, meskipun ditulis dalam kasus yang berbeda. Misalnya, jika sudah memiliki kunci metadata zona project yang disebut project-zonal-metadata-key, Anda tidak dapat membuat kunci metadata zona project baru seperti Project-Zonal-Metadata-Key, PROJECT-ZONAL-METADATA-KEY, atau variasi lain dari string yang sama.

  • Setiap metadata value memiliki batas maksimum 256 KB.

  • Setiap metadata value peka huruf besar/kecil, kecuali untuk nilai boolean.

Contohnya, kunci SSH disimpan sebagai metadata kustom pada kunci ssh-keys. Jika konten metadata Anda atau value untuk kunci ini melebihi batas 256 KB, Anda tidak akan dapat menambahkan lebih banyak kunci SSH. Jika Anda mencapai batas ini, sebaiknya hapus kunci yang tidak digunakan guna mengosongkan ruang metadata untuk kunci baru.

Selain itu, jika Anda memberikan konten skrip startup atau shutdown secara langsung, konten skrip startup dan shutdown ini mungkin juga disimpan sebagai metadata kustom dan diperhitungkan terhadap batasan ukuran ini. Untuk menghindari hal ini, simpan skrip startup atau shutdown Anda sebagai file yang dihosting di lokasi eksternal, seperti Cloud Storage, dan berikan URL skrip startup saat membuat VM. Dengan cara ini, file ini akan didownload ke VM, bukan disimpan di server metadata.

Nilai boolean

Untuk kolom yang menerima nilai boolean, TRUE atau FALSE, nilai berikut juga dapat digunakan:

Status Nilai alternatif
TRUE Y, Yes, 1
FALSE N, No, 0

Nilai Boolean tidak peka huruf besar/kecil. Misalnya, Anda dapat menggunakan False, false, atau FALSE untuk menonaktifkan fitur.

Menetapkan metadata kustom pada VM

Bagian ini memberikan informasi tentang cara menambahkan metadata kustom baru, atau memperbarui nilai metadata kustom yang ada, untuk VM Compute Engine Anda dengan salah satu cara berikut:

Menetapkan metadata kustom untuk seluruh project

Anda dapat menambahkan atau memperbarui metadata kustom untuk semua instance dalam suatu project menggunakan Konsol Google Cloud, Google Cloud CLI, atau REST.

Gunakan petunjuk ini untuk menerapkan setelan metadata ke semua VM dalam project. Misalnya, jika Anda menentukan pasangan metadata baz=bat di seluruh project, pasangan metadata tersebut akan otomatis diterapkan ke semua VM dalam project.

Konsol

  1. Di Konsol Google Cloud, buka halaman Metadata.

    Buka halaman Metadata

  2. Klik Edit.
  3. Tambahkan atau edit entri metadata.
  4. Simpan perubahan Anda.

gcloud

Gunakan perintah project-info add-metadata.

gcloud compute project-info add-metadata \
    --metadata=KEY=VALUE

Ganti kode berikut:

  • KEY: nama kunci metadata Anda
  • VALUE: nilai yang disimpan untuk kunci ini

Contoh

Misalnya untuk menetapkan dua entri baru foo=bar dan baz=bat pada sebuah project, jalankan perintah berikut:

gcloud compute project-info add-metadata \
    --metadata=foo=bar,baz=bat

Secara opsional, Anda dapat menentukan satu atau beberapa file yang akan digunakan untuk membaca metadata menggunakan flag --metadata-from-file.

REST

  1. Opsional. Untuk melakukan penguncian optimis, Anda dapat menyediakan sidik jari secara opsional.

    Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine. Sidik jari akan berubah setelah setiap permintaan, dan jika Anda memberikan sidik jari yang tidak cocok, permintaan Anda akan ditolak.

    Jika Anda tidak memberikan sidik jari, pemeriksaan konsistensi tidak akan dilakukan, dan permintaan projects().setCommonInstanceMetadata akan berhasil. Perilaku ini berbeda dengan metode instances().setMetadata dan instanceSettings().patch, yang selalu memerlukan sidik jari.

    Untuk mendapatkan sidik jari saat ini dari sebuah project, panggil metode project().get.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
    

    Outputnya mirip dengan hal berikut ini:

    {
      "name": "myproject",
      "commonInstanceMetadata": {
        "kind": "compute#metadata",
        "fingerprint": "FikclA7UBC0=",
        ...
      }
    }
    
  2. Buat permintaan ke metode projects().setCommonInstanceMetadata dan tetapkan key-value pair metadata kustom Anda:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata
    
    {
      "fingerprint": "FikclA7UBC0=",
      "items": [
        {
        "key": "foo",
        "value": "bar"
        }
      ]
    }
    

Ganti PROJECT_ID dengan project ID Anda.

Menetapkan metadata zona project kustom

Anda dapat menambahkan atau memperbarui entri metadata zona project untuk VM Anda dengan salah satu cara berikut:

  • Anda dapat menambahkan kunci metadata kustom baru pada tingkat zona project dan menetapkan nilai metadata untuk semua VM yang berada di zona tertentu dalam suatu project.
  • Anda dapat memperbarui nilai kunci metadata zona project kustom yang ada untuk semua VM yang berada di zona tertentu dalam suatu project.
  • Untuk kunci metadata project yang sudah memiliki nilai lingkup project, Anda dapat mengganti nilai tingkat project tersebut untuk semua VM di zona tertentu dan menentukan VM tersebut untuk menggunakan nilai zona project.

Hal-hal yang perlu diperhatikan sebelum menetapkan metadata zona project kustom

Entri metadata zona project dan project disimpan di direktori project/ yang sama. Jika Anda menetapkan nilai yang berbeda untuk kunci metadata kustom yang sama untuk VM di tingkat project dan di tingkat zona project, nilai metadata zona project untuk kunci tersebut akan lebih diutamakan daripada nilai metadata tingkat project di zona masing-masing.

  • Jika Anda menambahkan nilai metadata zona project untuk kunci metadata yang sudah memiliki nilai seluruh project, Compute Engine akan mengganti nilai seluruh project untuk VM di zona yang ditentukan ini dan memperbarui direktori /project dengan nilai zona project.
  • Jika Anda menambahkan nilai metadata tingkat project baru untuk kunci metadata yang sudah memiliki nilai zona project, tidak akan ada perubahan. Compute Engine mempertahankan nilai zona project di direktori /project di zona tertentu.
  • Jika Anda tidak menentukan nilai zona project untuk kunci metadata kustom di zona tertentu, tetapi kunci tersebut memiliki nilai tingkat project, VM Anda akan terus memiliki nilai seluruh project di zona tersebut.

Prosedur

Anda dapat menambahkan atau memperbarui metadata kustom untuk semua instance VM di zona tertentu dalam suatu project menggunakan Google Cloud CLI atau REST.

gcloud

  • Untuk menambahkan atau memperbarui metadata zona project kustom, gunakan perintah gcloud beta compute project-zonal-metadata add.

    gcloud beta compute project-zonal-metadata add \
      --zone=ZONE \
      --project=PROJECT_ID  \
      --metadata=KEY1=VALUE1,KEY2=VALUE2,...

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat Anda ingin menambahkan atau memperbarui metadata zona project.
    • KEY1, KEY2...: kunci metadata zona project kustom yang ingin Anda tambahkan atau perbarui nilainya.
    • VALUE1, VALUE2...: nilai metadata zona project yang ingin Anda tetapkan untuk kunci metadata zona project yang sudah ada dan baru. Bergantung pada kunci dan nilai metadata kustom Anda, salah satu hal berikut akan terjadi:

    • Jika kunci metadata kustom yang sesuai adalah kunci seluruh project yang sudah ada, Compute Engine akan mengganti nilai metadata di seluruh project dan menggunakan nilai zona project untuk semua VM di zona yang ditentukan. Semua VM di zona yang ditentukan mewarisi nilai zona project baru. Jika Anda membuat perubahan mendatang pada nilai tingkat project untuk kunci yang sama, perubahan tersebut tidak akan memengaruhi nilai zona project dan VM di zona ini akan terus memiliki nilai zona project sebagai metadata project-nya.

    • Jika kunci metadata kustom yang sesuai adalah kunci metadata zona project yang sudah ada dan nilai metadata yang ditentukan adalah nilai baru, Compute Engine akan memperbarui nilai zona project untuk kunci yang ada.

    • Jika kunci metadata kustom yang terkait adalah kunci baru yang bukan bagian dari metadata zona project atau tingkat project yang ada, Compute Engine akan membuat kunci metadata zona project dan menambahkan nilai metadata ini.

    • Jika kunci metadata kustom yang terkait adalah kunci metadata zona project yang sudah ada dan nilai metadata yang ditentukan sama dengan nilai yang ada, entri metadata zona project tidak akan berubah.

Contoh: Menambahkan entri metadata zona project kustom baru

Misalnya, pertimbangkan project bernama my-project dengan metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"value-1" dan "key-2":"value-2"

Untuk menambahkan "key-4":"value-4" sebagai pasangan metadata zona project kustom baru di zona us-central1-a, jalankan perintah berikut

gcloud beta compute project-zonal-metadata add \
    --metadata=key-4=value-4 \
    --project=my-project \
    --zone=us-central1-a

Contoh: Memperbarui nilai entri metadata zona project kustom yang ada

Pertimbangkan contoh project my-project yang sama, yang kini memiliki metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"value-1", "key-2":"value-2", dan "key-4":"value-4"

Untuk memperbarui nilai metadata zona project key-1 dan key-4 di zona us-cerntral1-a dengan nilai baru, jalankan perintah berikut.

gcloud beta compute project-zonal-metadata add \
    --metadata=key-1=new-value-1,key-4=new-value-4 \
    --project=my-project \
    --zone=us-central1-a

Contoh: Mengganti nilai lingkup project untuk kunci metadata dan menggunakan nilai zona project

Pertimbangkan contoh project my-project yang sama, yang kini memiliki metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"new-value-1", "key-2":"value-2", dan "key-4":"new-value-4"

Dalam contoh project ini, pertimbangkan key-3, yang memiliki nilai metadata tingkat project sebesar value-c. Misalnya Anda ingin menetapkan nilai metadata zona project value-3 untuk kunci ini bagi semua VM di zona us-central1-a. Saat Anda melakukan operasi, untuk semua VM di zona us-central1-a, Compute Engine akan mengganti nilai di seluruh project dan menggunakan nilai zona project. VM di semua zona lain dalam project mempertahankan nilai metadata tingkat project atau zona project yang berlaku untuk key-3.

Untuk mengganti nilai lingkup project untuk key-3 dan menetapkan nilai zona project, jalankan perintah berikut:

gcloud beta compute project-zonal-metadata add \
    --metadata=key-3=value-3 \
    --project=my-project \
    --zone=us-central1-a

REST

  1. Dapatkan sidik jari saat ini dan lihat semua key-value pair yang ada untuk project di zona tersebut.

    Untuk melakukan penguncian optimis, Anda harus memberikan sidik jari. Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine. Sidik jari berubah setiap kali Anda membuat permintaan untuk menambahkan, memperbarui, atau menghapus metadata zona project, dan jika Anda memberikan sidik jari yang tidak cocok, Compute Engine akan menolak permintaan Anda.

    Jika Anda tidak memberikan sidik jari, pemeriksaan konsistensi akan dilakukan dan permintaan update Anda tidak akan berhasil. Cara ini berfungsi sehingga hanya satu permintaan yang dapat dibuat dalam satu waktu, sehingga mencegah konflik. Perilaku ini cocok dengan instances().setMetadata, yang selalu memerlukan sidik jari.

    Untuk mendapatkan sidik jari metadata zona project saat ini, buat permintaan GET ke metode instanceSettings().get.

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat Anda ingin menetapkan metadata zona project.

    Berikut adalah contoh output untuk permintaan ini:

        {
          "fingerprint": "VlRIl8dx9vk=",
          "metadata": {
            ...
          }
        }
    
  2. Untuk menambahkan atau memperbarui metadata zona project, buat permintaan PATCH ke metode instanceSettings().patch. Anda harus memberikan informasi berikut dalam permintaan Anda:

    • Mask pembaruan. Gunakan parameter kueri update_mask. Mask update harus berisi kunci metadata untuk hal berikut:

      • Metadata zona project kustom baru yang ingin Anda tambahkan
      • Metadata zona project kustom yang sudah ada yang nilainya ingin Anda perbarui

      Anda harus menambahkan string metadata.items. sebagai awalan untuk setiap kunci—misalnya, metadata.items.key1,metadata.items.key3.

    • Dalam isi permintaan, berikan informasi berikut:

      • Kunci dan nilai metadata untuk metadata zona project kustom baru yang ingin Anda tambahkan
      • Kunci dan nilai metadata untuk metadata zona project kustom yang sudah ada dan ingin Anda perbarui
      • Nilai sidik jari saat ini

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
          "KEY1": "VALUE1",
          "KEY2": "VALUE2",
          ...
        }
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project.
    • ZONE: zona tempat Anda ingin menetapkan metadata zona project.
    • PREFIXED_METADATA_KEYS: daftar kunci metadata untuk hal berikut, dengan setiap kunci diawali dengan string metadata.items. :

      • Metadata zona project kustom baru yang ingin Anda tambahkan
      • Metadata zona project kustom yang sudah ada yang nilainya ingin Anda perbarui

      Misalnya, kunci metadata zona project Anda saat ini adalah key-1 dan key-2. Jika Anda ingin menambahkan kunci metadata baru key-3 dan juga memperbarui salah satu kunci metadata saat ini, key-1, maka update mask Anda harus memiliki string berikut:

      metadata.items.key1,metadata.items.key3

    • FINGER_PRINT: nilai sidik jari saat ini.

    • KEY1, KEY2...: kunci metadata zona project kustom yang ingin Anda tambahkan atau perbarui nilainya. Tentukan semua kunci metadata zona project kustom yang Anda tentukan di update mask.

    • VALUE1, VALUE2...: nilai metadata zona project yang ingin Anda tetapkan untuk kunci metadata zona project yang sudah ada dan baru. Bergantung pada kunci dan nilai metadata kustom Anda, salah satu hal berikut akan terjadi:

      • Jika kunci metadata kustom yang sesuai adalah kunci seluruh project yang sudah ada, Compute Engine akan mengganti nilai metadata di seluruh project dan menggunakan nilai zona project untuk semua VM di zona yang ditentukan. Semua VM di zona yang ditentukan mewarisi nilai zona project baru. Jika Anda membuat perubahan mendatang pada nilai tingkat project untuk kunci yang sama, pembaruan tersebut tidak akan memengaruhi nilai zona project dan VM di zona ini akan terus memiliki nilai zona project sebagai metadata project-nya.
      • Jika kunci metadata kustom yang sesuai adalah kunci metadata zona project yang sudah ada dan nilai metadata yang ditentukan adalah nilai baru, Compute Engine akan memperbarui nilai zona project untuk kunci yang ada.
      • Jika kunci metadata kustom yang terkait adalah kunci baru yang bukan bagian dari metadata zona project atau tingkat project yang ada, Compute Engine akan membuat kunci metadata zona project dan menambahkan nilai metadata ini.
      • Jika kunci metadata kustom yang terkait adalah kunci metadata zona project yang sudah ada dan nilai metadata yang ditentukan sama dengan nilai yang ada, entri metadata zona project tidak akan berubah.

Contoh: Menambahkan entri metadata zona project kustom baru

Misalnya, pertimbangkan project bernama my-project dengan metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"value-1" dan "key-2":"value-2"

Untuk menambahkan "key-4":"value-4" sebagai pasangan metadata zona project kustom baru di zona us-central1-a, buat permintaan PATCH berikut:

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-4": "value-4"
    }
  }
}

Contoh: Memperbarui nilai entri metadata zona project kustom yang ada

Pertimbangkan contoh project my-project yang sama, yang kini memiliki metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"value-1", "key-2":"value-2", dan "key-4":"value-4"

Untuk memperbarui nilai metadata zona project dari key-1 dan key-4 di zona us-cerntral1-a dengan nilai baru, buat permintaan PATCH berikut:

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-4
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-1": "new-value-1",
    "key-4": "new-value-4"
    }
  }
}

Contoh: Mengganti nilai lingkup project untuk kunci metadata dan menggunakan nilai zona project

Pertimbangkan contoh project my-project yang sama, yang kini memiliki metadata kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"new-value-1", "key-2":"value-2", dan "key-4":"new-value-4"

Dalam contoh project ini, pertimbangkan key-3, yang memiliki nilai metadata tingkat project sebesar value-c. Misalnya Anda ingin menetapkan nilai metadata zona project value-3 untuk kunci ini bagi semua VM di zona us-central1-a. Saat Anda melakukan operasi, untuk semua VM di zona us-central1-a, Compute Engine akan mengganti nilai di seluruh project dan menggunakan nilai zona project. VM di semua zona lain dalam project mempertahankan nilai metadata tingkat project atau zona project yang berlaku untuk key-3.

Untuk mengganti nilai metadata tingkat project untuk key-3 dan menggunakan nilai zona project kustom value-3, buat permintaan PATCH berikut:

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-3
{
  "fingerprint": "VlRIl8dx9vk=",
  "metadata": {
  "items": {
    "key-3": "value-3"
    }
  }
}

Menetapkan metadata instance kustom

Anda dapat menambahkan atau memperbarui metadata kustom untuk satu instance VM menggunakan Konsol Google Cloud, Google Cloud CLI, atau REST.

Anda dapat menyetel metadata instance kustom dengan salah satu cara berikut:

Menambahkan metadata instance kustom selama pembuatan VM

Gunakan petunjuk ini untuk menambahkan metadata pada instance VM tertentu pada saat pembuatannya.

Konsol

  1. Di konsol Google Cloud, buka halaman Create an instance.

    Buka Create an instance

  2. Tentukan detail VM.

  3. Luaskan bagian Opsi lanjutan, dan lakukan hal berikut:

    1. Luaskan bagian Pengelolaan.
    2. Untuk menambahkan beberapa key-value pair untuk metadata kustom Anda, di bagian Metadata, klik Tambahkan item.
  4. Untuk membuat VM, klik Buat.

gcloud

Untuk menetapkan metadata kustom, gunakan perintah gcloud compute instances create dengan flag --metadata.

gcloud compute instances create VM_NAME \
    --metadata=KEY=VALUE

Ganti kode berikut:

  • VM_NAME: nama VM Anda
  • KEY: nama kunci metadata Anda
  • VALUE: nilai yang disimpan untuk kunci ini

Contoh

Misalnya untuk menetapkan kunci baru foo yang memiliki nilai bar pada VM bernama example-instance, jalankan perintah berikut:

gcloud compute instances create example-instance \
    --metadata=foo=bar

REST

Gunakan metode instances.insert dan berikan metadata kustom sebagai bagian dari properti metadata dalam permintaan Anda:

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "...": [
    {
    }
    ],
  "metadata": {
    "items": [
      {
        "key": "KEY",
        "value": "VALUE"
      }
    ]
  },
  ..
}

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zone tempat VM akan dibuat
  • MACHINE_TYPE: jenis mesin, bawaan atau kustom, untuk VM yang baru
  • VM_NAME: nama VM baru
  • KEY: nama kunci metadata Anda
  • VALUE: nilai yang disimpan untuk kunci ini

Menambahkan atau mengupdate metadata instance kustom pada VM yang sudah ada

Gunakan petunjuk ini untuk mengupdate metadata pada instance VM tertentu yang sudah ada.

Konsol

  1. Di Konsol Google Cloud, buka halaman VM instances.

    Buka halaman Instance VM

  2. Klik instance yang metadatanya ingin Anda perbarui.
  3. Klik tombol Edit di bagian atas halaman.
  4. Di bagian Metadata kustom, klik Tambahkan item atau edit entri metadata yang sudah ada.
  5. Simpan perubahan Anda.

gcloud

Memperbarui metadata VM dengan gcloud CLI adalah tindakan tambahan. Tentukan hanya kunci metadata yang ingin ditambahkan atau diubah. Jika kunci yang Anda berikan sudah ada, nilai untuk kunci tersebut akan diperbarui dengan nilai baru.

Gunakan perintah instances add-metadata:

gcloud compute instances add-metadata VM_NAME \
    --metadata=KEY=VALUE,KEY=VALUE

Ganti kode berikut:

  • VM_NAME: nama VM Anda
  • KEY: nama kunci metadata Anda
  • VALUE: nilai yang disimpan untuk kunci ini

Contoh

Jika Anda ingin menambahkan entri foo=bar, gunakan:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bar

Jika Anda ingin mengubah entri foo=bar menjadi foo=bat, gunakan:

gcloud compute instances add-metadata VM_NAME \
    --metadata=foo=bat

REST

  1. Dapatkan sidik jari saat ini dan lihat key-value pair yang ada untuk VM. Untuk melakukannya, panggil metode instances().get.

    Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine dan digunakan untuk melakukan penguncian optimis. Untuk mengupdate VM, Anda harus memberikan nilai sidik jari yang cocok. Sidik jari berubah setelah setiap permintaan, dan jika Anda memberikan sidik jari yang tidak cocok, permintaan Anda akan ditolak. Ini berfungsi sehingga hanya satu update yang dapat dilakukan dalam satu waktu, sehingga mencegah konflik.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat VM berada
    • VM_NAME: nama VM Anda

    Outputnya mirip dengan hal berikut ini:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
          {
            "key": "foo",
            "value": "bar"
          }
        ]
        },
      ...
    }
    
  2. Buat permintaan ke metode instances().setMetadata. Berikan daftar nilai metadata baru dan nilai fingerprint saat ini.

    Jika VM memiliki key-value pair yang sudah ada dan ingin dipertahankan, Anda harus menyertakannya dalam permintaan ini dengan key-value pair baru.

    Contoh

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
    
    {
    "fingerprint": "zhma6O1w2l8=",
    "items": [
      {
        "key": "foo",
        "value": "bar"
      },
      {
        "key": "baz",
        "value": "bat"
      }
    ]
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat VM berada
    • VM_NAME: nama VM Anda

Menghapus metadata kustom dari VM

Anda dapat menghapus metadata kustom dari VM Compute Engine dengan salah satu cara berikut:

Menghapus metadata kustom tingkat project

Anda dapat menghapus metadata kustom tingkat project menggunakan Google Cloud Console atau Google Cloud CLI.

Konsol

  1. Di Konsol Google Cloud, buka halaman Metadata.

    Buka halaman Metadata

  2. Klik edit Edit di bagian atas halaman.
  3. Di bagian Metadata, klik delete Delete item untuk setiap entri metadata yang ingin dihapus.
  4. Untuk mengonfirmasi perubahan dan menghapus metadata kustom di seluruh project, klik Save.

gcloud

Untuk menghapus metadata kustom di seluruh project, gunakan perintah gcloud compute project-info remove-metadata.

  • Jika Anda ingin menghapus entri metadata kustom untuk kunci tertentu, tentukan kunci tersebut menggunakan flag --keys, lalu kecualikan nilai kunci tersebut.
gcloud compute project-info remove-metadata \
    --keys=KEY1,KEY2,...
  • Jika Anda ingin menghapus semua metadata kustom untuk VM, tentukan flag --all.
gcloud compute project-info remove-metadata \
    --all

Ganti kode berikut:

  • KEY1, KEY2...: kunci metadata instance kustom yang ingin dihapus.

Menghapus metadata zona project kustom

Anda dapat menghapus metadata zona project kustom menggunakan Google Cloud CLI atau Compute Engine API.

gcloud

Untuk menghapus metadata zona project kustom, gunakan perintah gcloud beta compute project-zonal-metadata remove dan tentukan semua kunci metadata yang ingin dihapus menggunakan flag --keys.

gcloud beta compute project-zonal-metadata remove \
    --project=PROJECT_ID  \
    --zone=ZONE \
    --keys=KEY1,KEY2,...

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zona tempat Anda ingin menetapkan metadata zona project.
  • KEY1, KEY2...: kunci metadata zona project kustom yang ingin Anda hapus.

Setelah Anda menjalankan perintah, jika salah satu kunci yang ditentukan memiliki nilai metadata di seluruh project, VM di zona tertentu akan mewarisi nilai seluruh project tersebut. Jika kunci metadata hanya ditetapkan pada tingkat zona project dan tidak ada kunci tingkat project yang sesuai, VM akan kehilangan informasi metadata tersebut.

Contoh:

Pertimbangkan contoh project my-project, yang memiliki metadata project kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"new-value-1", "key-2":"value-2", "key-3":"value-3", dan "key-4":"new-value-4"

Untuk menghapus semua metadata zona project untuk zona us-central1-a, jalankan perintah berikut.

gcloud beta compute project-zonal-metadata remove \
    --metadata=key-1,key-2,key-3,key-4 \
    --project=my-project \
    --zone=us-central1-a

Setelah Anda menjalankan perintah, VM di zona us-central1-a akan memiliki metadata project kustom berikut:

  • "key-1":"value-a"
  • "key-2":"value-b"
  • "key-3":"value-c"

REST

  1. Dapatkan sidik jari saat ini dan lihat semua key-value pair yang ada untuk project di zona tersebut.

    Untuk melakukan penguncian optimis, Anda harus memberikan sidik jari. Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine. Sidik jari berubah setiap kali Anda membuat permintaan untuk menambahkan, memperbarui, atau menghapus metadata zona project, dan jika Anda memberikan sidik jari yang tidak cocok, Compute Engine akan menolak permintaan Anda.

    Jika Anda tidak memberikan sidik jari, pemeriksaan konsistensi akan dilakukan dan permintaan penghapusan Anda tidak akan berhasil. Cara ini berfungsi sehingga hanya satu permintaan yang dapat dibuat dalam satu waktu, sehingga mencegah konflik. Perilaku ini cocok dengan instances().setMetadata, yang selalu memerlukan sidik jari.

    Untuk mendapatkan sidik jari project saat ini, lakukan panggilan metode instanceSettings().get.

    GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat Anda ingin menghapus metadata zona project.

    Berikut adalah contoh output untuk permintaan ini:

        {
          "fingerprint": "FikclA7UBC0=",
          "metadata": {
            ...
          }
        }
    
  2. Untuk menghapus metadata zona project kustom, buat permintaan PATCH ke metode instanceSettings().patch dengan mengecualikan kunci metadata yang metadata zonanya ingin Anda hapus dari isi permintaan . Anda harus memberikan hal berikut dalam permintaan Anda:

    • Mask pembaruan. Gunakan parameter kueri update_mask. Mask update harus berisi semua kunci metadata zona project kustom yang metadatanya ingin Anda hapus. Anda harus menambahkan string metadata.items. sebagai awalan untuk setiap kunci—misalnya, metadata.items.key1,metadata.items.key3.
    • Dalam isi permintaan, hanya berikan nilai sidik jari saat ini. Mengecualikan semua kunci metadata yang Anda tentukan di mask pembaruan. Jika Anda menyertakan salah satu kunci metadata di mask update dan isi permintaan, Compute Engine tidak akan menghapus metadata zona project untuk kunci tersebut.
    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceSettings?update_mask=PREFIXED_METADATA_KEYS
    {
      "fingerprint": "FINGER_PRINT",
      "metadata": {
        "items": {
        }
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project.
    • ZONE: zona tempat Anda ingin menghapus metadata zona project.
    • PREFIXED_METADATA_KEYS: daftar semua kunci metadata zona project kustom yang sudah ada dan ingin Anda hapus, dengan setiap kunci diawali dengan string metadata.items. . Untuk memastikan permintaan penghapusan Anda berhasil, kecualikan kunci metadata ini dari isi permintaan. Jika Anda menyertakan salah satu kunci metadata di mask update dan isi permintaan, Compute Engine tidak akan menghapus metadata zona project untuk kunci tersebut.

      Misalnya, kunci metadata zona project Anda saat ini adalah key-1, key-2, key-3, dan key-4, dan Anda ingin menghapus entri metadata zona project untuk key-1 dan key-2, maka update mask Anda harus memiliki string berikut:

      metadata.items.key1,metadata.items.key2

    • FINGER_PRINT: nilai sidik jari saat ini.

Setelah Anda membuat permintaan, jika salah satu kunci yang ditentukan memiliki nilai metadata di seluruh project, VM di zona tertentu akan mewarisi nilai seluruh project tersebut. Jika kunci metadata hanya ditetapkan pada tingkat zona project dan tidak ada kunci tingkat project yang sesuai, VM akan kehilangan informasi metadata tersebut.

Contoh:

Pertimbangkan contoh project my-project, yang memiliki metadata project kustom berikut:

  • Metadata tingkat project: "key-1":"value-a", "key-2":"value-b", dan "key-3":"value-c"
  • Metadata zona project di zona us-central1-a: "key-1":"new-value-1", "key-2":"value-2", "key-3":"value-3", dan "key-4":"new-value-4"

Untuk menghapus metadata zona project untuk key-1 dan key-2 di zona us-central1-a, buat permintaan PATCH berikut.

PATCH https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/instanceSettings?update_mask=metadata.items.key-1,metadata.items.key-2
{
  "fingerprint": "FikclA7UBC0=",
  "metadata": {
  "items": {
    }
  }
}

Setelah permintaan ini berhasil, VM di zona us-central1-a akan memiliki metadata project kustom berikut. VM mewarisi nilai metadata tingkat project untuk key-1 dan key-2, tetapi mempertahankan nilai zona project untuk key-3.

  • "key-1":"value-a"
  • "key-2":"value-b"
  • "key-3":"value-3"

Menghapus metadata instance kustom

Anda dapat menghapus metadata instance kustom menggunakan Konsol Google Cloud, Google Cloud CLI, atau REST.

Konsol

  1. Di Konsol Google Cloud, buka halaman VM instances.

    Buka halaman VM instances

  2. Di kolom Name, klik nama VM yang metadatanya ingin Anda hapus.
  3. Klik edit Edit di bagian atas halaman.
  4. Di bagian Metadata, klik delete Delete item untuk setiap entri metadata yang ingin dihapus.
  5. Untuk mengonfirmasi perubahan dan menghapus metadata instance kustom, klik Save.

gcloud

Untuk menghapus metadata instance kustom, gunakan perintah gcloud compute instances remove-metadata.

  • Jika Anda ingin menghapus entri metadata kustom untuk kunci tertentu, tentukan kunci tersebut menggunakan flag --keys, lalu kecualikan nilai kunci tersebut.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --keys=KEY1,KEY2,...
  • Jika Anda ingin menghapus semua metadata kustom untuk VM, tentukan flag --all.
gcloud compute instances remove-metadata VM_NAME \
    --zone=ZONE  \
    --all

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • ZONE: zona VM Anda.
  • VM_NAME: nama VM Anda
  • KEY1, KEY2...: kunci metadata instance kustom yang ingin dihapus.

REST

  1. Dapatkan sidik jari saat ini dan lihat key-value pair yang ada untuk VM. Untuk melakukannya, panggil metode instances().get.

    Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine dan digunakan untuk melakukan penguncian optimis. Untuk mengupdate VM, Anda harus memberikan nilai sidik jari yang cocok. Sidik jari berubah setelah setiap permintaan, dan jika Anda memberikan sidik jari yang tidak cocok, permintaan Anda akan ditolak. Ini berfungsi sehingga hanya satu update yang dapat dilakukan dalam satu waktu, sehingga mencegah konflik.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • ZONE: zona VM Anda.
    • VM_NAME: nama VM Anda

    Outputnya mirip dengan hal berikut ini:

    {
      ...
      "name": "example-instance",
      "metadata": {
        "kind": "compute#metadata",
        "fingerprint": "zhma6O1w2l8="
        "items": [
        {
          "key": "key-1",
          "value": "value-1"
        }
        {
          "key": "key-2",
          "value": "value-2"
        }
        ]
      },
      ...
    }
    
  2. Buat permintaan ke metode instances().setMetadata. Anda harus menyertakan nilai sidik jari metadata saat ini agar permintaan Anda berhasil.

    • Untuk menghapus semua key-value pair metadata kustom dari VM, di properti items, kecualikan kunci metadata yang nilai metadatanya ingin Anda hapus.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": "FINGER_PRINT"
      "items": [
        {
          "key": "KEY1"
          "value": "VALUE1"
        }
        {
          "key": "KEY2"
          "value": "VALUE2"
        }
        ...
      ]
      }
      
    • Untuk menghapus semua metadata instance kustom pada VM, kecualikan properti items sepenuhnya.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata
      
      {
      "fingerprint": FINGER_PRINT
      }
      

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • ZONE: zona VM Anda.
    • VM_NAME: nama VM Anda
    • FINGER_PRINT: nilai sidik jari saat ini.
    • KEY1, KEY2...: kunci metadata instance kustom yang ingin dihapus.
    • VALUE1, VALUE2...: nilai kunci metadata instance kustom yang ingin dihapus.

Langkah selanjutnya