Data kustom dan cloud-init di Azure Virtual Machines

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

Berlaku untuk: ✔️ mesin virtual Linux ✔️ mesin virtual Windows ✔️ Set skala fleksibel

Anda mungkin perlu memasukkan skrip atau metadata lain ke dalam mesin virtual (VM) Microsoft Azure pada waktu provisi. Di cloud lain, konsep ini sering disebut data pengguna. Microsoft Azure memiliki fitur serupa yang disebut data kustom.

Data kustom tersedia untuk Mesin Virtual selama pengaktifan atau penyiapan pertama, yang disebut provisi. Provisi adalah proses dengan parameter pembuatan Mesin Virtual (misalnya, nama host, nama pengguna, kata sandi, sertifikat, data kustom, dan kunci) tersedia untuk Mesin Virtual. Agen provisi, seperti Agen Linux atau cloud-init, memproses parameter tersebut.

Meneruskan data kustom ke Mesin Virtual

Untuk menggunakan data kustom, Anda harus mengodekan Base64 konten sebelum meneruskan data ke API--kecuali jika Anda menggunakan alat CLI yang melakukan konversi untuk Anda, seperti Azure CLI. Ukurannya tidak boleh melebihi 64 KB.

Di CLI, Anda dapat meneruskan data kustom Anda sebagai file, seperti yang ditunjukkan contoh berikut. File dikonversi ke Base64.

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

Di Azure Resource Manager, terdapat fungsi base64:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Memproses data kustom

Agen provisi yang diinstal pada Mesin Virtual menangani komunikasi dengan platform dan menempatkan data pada sistem file.

Windows

Data kustom ditempatkan di %SYSTEMDRIVE%\AzureData\CustomData.bin sebagai file biner, tetapi tidak diproses. Jika Anda ingin memproses file ini, Anda perlu membuat gambar kustom dan menulis kode untuk memproses CustomData.bin.

Linux

Pada sistem operasi Linux, data kustom diteruskan ke Mesin Virtual melalui file ovf-env.xml. File tersebut disalin ke direktori /var/lib/waagent selama provisi. Versi Agen Linux yang lebih baru menyalin data yang dikodekan Base64 ke /var/lib/waagent/CustomData untuk kenyamanan.

Azure saat ini mendukung dua agen provisi:

  • Agen Linux. Secara default, agen tidak memproses data kustom. Anda perlu membuat gambar kustom dengan data yang diaktifkan. Pengaturan yang relevan adalah:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Saat Anda mengaktifkan data kustom dan menjalankan skrip, komputer virtual tidak akan melaporkan provisi VM yang berhasil hingga skrip selesai dieksekusi. Jika skrip melebihi batas total waktu provisi VM 40 menit, pembuatan VM gagal.

    Jika skrip gagal dijalankan, atau terjadi kesalahan selama eksekusi, hal ini bukan kegagalan provisi yang fatal. Anda perlu membuat jalur pemberitahuan untuk memberi tahu Anda tentang status penyelesaian skrip.

    Untuk memecahkan masalah eksekusi data kustom, tinjau /var/log/waagent.log.

  • cloud-init. Secara default, agen ini memproses data kustom. Agen menerima beberapa format data kustom, seperti konfigurasi dan skrip cloud-init.

    Mirip dengan Agen Linux, jika kesalahan terjadi selama eksekusi pemrosesan konfigurasi atau skrip saat cloud-init memproses data kustom, hal ini bukan kegagalan provisi yang fatal. Anda perlu membuat jalur pemberitahuan untuk memberi tahu Anda tentang status penyelesaian skrip.

    Namun, tidak seperti Agen Linux, cloud-init tidak menunggu konfigurasi data kustom dari pengguna selesai sebelum melaporkan ke platform bahwa Mesin Virtual sudah siap. Untuk informasi selengkapnya tentang cloud-init di Azure, termasuk pemecahan masalah, lihat dukungan cloud-init untuk mesin virtual di Azure.

FAQ

Dapatkah saya memperbarui data kustom setelah VM dibuat?

Untuk Mesin Virtual tunggal, Anda tidak dapat memperbarui data kustom dalam model Mesin Virtual. Tetapi untuk Virtual Machine Scale Sets, Anda dapat memperbarui data kustom. Untuk informasi selengkapnya, lihat Mengubah Set Skala. Saat Anda memperbarui data kustom dalam model untuk Virtual Machine Scale Set:

  • Instans yang ada dalam set skala tidak mendapatkan data kustom yang diperbarui hingga diperbarui ke model terakhir dan digambarkan ulang.
  • Instans baru menerima data kustom baru.

Dapatkah saya menempatkan nilai sensitif dalam data kustom?

Kami menyarankan untuk tidak menyimpan data sensitif dalam data kustom. Untuk informasi selengkapnya, lihat praktik terbaik keamanan dan enkripsi data Azure.

Apakah data kustom tersedia di IMDS?

Data kustom tidak tersedia di Azure Instance Metadata Service (IMDS). Sebaiknya gunakan data pengguna di IMDS sebagai gantinya. Untuk informasi selengkapnya, lihat Data pengguna melalui Azure Instance Metadata Service.