dukungan cloud-init untuk komputer virtual di Azure

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Artikel ini menjelaskan dukungan yang ada untuk cloud-init untuk mengonfigurasi komputer virtual (VM) atau Virtual Machine Scale Sets pada waktu provisi di Azure. Konfigurasi cloud-init init ini dijalankan pada boot pertama setelah sumber daya disediakan oleh Azure.

Provisi VM adalah proses di mana Azure meneruskan nilai parameter Buat VM Anda, seperti nama host, nama pengguna, dan kata sandi, dan membuatnya tersedia untuk VM saat di-boot. 'Agen provisi' akan menggunakan nilai-nilai tersebut, mengonfigurasi VM, dan melaporkan kembali setelah selesai.

Azure mendukung dua agen provisi cloud-init, dan Azure Linux Agent (WALA).

gambaran umum cloud-init

cloud-init adalah pendekatan yang banyak digunakan untuk menyesuaikan VM Linux saat boot untuk pertama kalinya. Anda dapat menggunakan cloud-init untuk memasang paket dan menulis file, atau untuk mengonfigurasi pengguna dan keamanan. Karena cloud-init dipanggil selama proses boot awal, penerapan konfigurasi Anda tidak memerlukan langkah tambahan atau agen. Untuk informasi selengkapnya tentang cara memformat file Atau #cloud-config input lain dengan benar, lihat situs dokumentasi cloud-init. #cloud-config file adalah file teks yang dikodekan dalam base64.

cloud-init juga berfungsi di seluruh distribusi. Misalnya, Anda tidak menggunakan apt-get install atau yum install untuk menginstal paket. Sebagai gantinya, Anda dapat menentukan daftar paket yang akan diinstal. cloud-init secara otomatis menggunakan alat manajemen paket asli untuk distro yang Anda pilih.

Kami secara aktif bekerja dengan mitra distro Linux yang didukung agar citra yang diaktifkan cloud-init tersedia di Azure Marketplace. Gambar-gambar ini akan membuat penyebaran dan konfigurasi cloud-init Anda bekerja dengan mulus dengan VM dan set skala komputer virtual. Awalnya kami berkolaborasi dengan mitra distro Linux yang didukung dan upstream untuk memastikan fungsi cloud-init dengan OS di Azure, kemudian paket diperbarui dan tersedia untuk umum di repositori paket distro.

Ada dua tahap untuk membuat cloud-init tersedia untuk distribusi Linux yang didukung di Azure, dukungan paket, lalu dukungan gambar:

  • Dokumen 'dukungan paket cloud-init di Azure', yang didukung paket cloud-init dan seterusnya atau dalam pratinjau, sehingga Anda dapat menggunakan paket ini dengan OS dalam gambar kustom.
  • Dokumen 'image cloud-init ready' jika gambar sudah dikonfigurasi untuk menggunakan cloud-init.

Canonical

Publisher / Version Penawaran SKU Version gambar cloud-init siap dukungan paket cloud-init di Azure
Kanonis 24.04 UbuntuServer 24.04-LTS latest Ya Ya
Kanonis 22.04 UbuntuServer 22.04-LTS latest Ya Ya
Kanonis 20.04 UbuntuServer 20.04-LTS latest Ya Ya

Red Hat Enterprise Linux (RHEL)

Publisher / Version Penawaran SKU Version gambar cloud-init siap dukungan paket cloud-init di Azure
RedHat 7 Red Hat Enterprise Linux (RHEL) 7.7, 7.8, 7_9 latest Ya Ya
RedHat 8 Red Hat Enterprise Linux (RHEL) 8.1, 8.2, 8_3, 8_4 latest Ya Ya
RedHat 9 Red Hat Enterprise Linux (RHEL) 9_0, 9_1 latest Ya Ya
  • Semua SKU RedHat lainnya mulai dari RHEL 7 (versi 7.7) dan RHEL 8 (versi 8.1) termasuk gambar Gen1 dan Gen2 disediakan menggunakan cloud-init. Cloud-init tidak didukung pada RHEL 6.

Oracle

Publisher / Version Penawaran SKU Version gambar cloud-init siap dukungan paket cloud-init di Azure
Oracle 7 Oracle Linux 77, 78, ol79 latest Ya Ya
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm latest Ya Ya
  • Semua SKU Oracle lainnya mulai dari Oracle 7 (versi 7.7) dan Oracle 8 (versi 8.1) termasuk gambar Gen1 dan Gen2 disediakan menggunakan cloud-init.

SUSE SLES

Publisher / Version Penawaran SKU Version gambar cloud-init siap dukungan paket cloud-init di Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) semua SPs latest Ya Ya
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 latest Ya Ya
  • SUSE Linux Enterprise Server 12 adalah EOL sejak 31 Okt 2024, SP5 adalah SP terakhir

Debian

Publisher / Version Penawaran SKU Version gambar cloud-init siap dukungan paket cloud-init di Azure
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.1015 Ya Ya
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.991 Ya Ya
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.999 Ya Ya

Saat ini, Azure Stack mendukung provisi gambar yang diaktifkan cloud-init.

Apa perbedaan antara cloud-init dan Linux Agent (WALA)?

WALA adalah agen khusus platform Azure yang digunakan untuk menyediakan dan mengonfigurasi VM, dan menangani ekstensi Azure.

Kami meningkatkan tugas mengonfigurasi VM untuk menggunakan cloud-init alih-alih Agen Linux untuk memungkinkan pelanggan cloud-init yang ada menggunakan skrip cloud-init mereka saat ini, atau pelanggan baru untuk memanfaatkan fungsionalitas konfigurasi cloud-init yang kaya. Jika Anda memiliki investasi yang ada dalam skrip cloud-init untuk mengonfigurasi sistem Linux, tidak ada pengaturan tambahan yang diperlukan untuk mengaktifkan proses cloud-init.

cloud-init tidak dapat memproses ekstensi Azure, jadi WALA masih diperlukan dalam gambar untuk memproses ekstensi tetapi perlu menonaktifkan kode provisinya. Untuk gambar distro Linux yang didukung yang dikonversi ke provisi oleh cloud-init, mereka telah menginstal WALA, dan mengatur dengan benar.

Saat membuat VM, jika Anda tidak menyertakan sakelar Azure CLI --custom-data pada waktu provisi, cloud-init atau WALA mengambil parameter provisi VM minimal yang diperlukan untuk menyediakan VM dan menyelesaikan penyebaran dengan default. Jika Anda mereferensikan konfigurasi cloud-init dengan --custom-data sakelar, apa pun yang terkandung dalam data kustom Anda akan tersedia untuk cloud-init saat VM boot.

Konfigurasi cloud-init yang diterapkan ke VM tidak memiliki batasan waktu dan tidak akan menyebabkan penyebaran gagal dengan waktu habis. Ini tidak berlaku untuk WALA, jika Anda mengubah default WALA untuk memproses data kustom, itu tidak dapat melebihi total jatah waktu provisi VM 40 menit, jika demikian, VM Create akan gagal.

provisi VM cloud-init tanpa driver UDF

Dimulai dengan cloud-init 21.2, Anda dapat menggunakan cloud-init untuk menyediakan VM di Azure tanpa driver UDF. Jika driver UDF tidak tersedia dalam gambar, cloud-init menggunakan metadata yang tersedia di Azure Instance Metadata Service untuk menyediakan VM. Opsi ini hanya berfungsi untuk kunci SSH dan data pengguna. Untuk meneruskan kata sandi atau data kustom ke VM selama provisi, Anda harus menggunakan driver UDF.

Menyebarkan Komputer Virtual yang diaktifkan cloud-init

Menyebarkan komputer virtual yang diaktifkan cloud-init semahal merujuk pada distribusi yang diaktifkan cloud-init selama penyebaran. Penjaga distribusi Linux harus memilih untuk mengaktifkan dan mengintegrasikan cloud-init ke dalam gambar dasar yang diterbitkan Azure mereka. Setelah mengonfirmasi gambar yang ingin Anda sebarkan diaktifkan cloud-init, Anda dapat menggunakan Azure CLI untuk menyebarkan gambar.

Langkah pertama dalam menyebarkan gambar ini adalah membuat grup sumber daya dengan perintah az group create . Grup sumber daya Azure adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola.

Contoh berikut ini menampilkan cara membuat grup sumber daya bernama myResourceGroup di lokasi eastus.

az group create --name myResourceGroup --location eastus

Langkah selanjutnya adalah membuat file di shell Anda saat ini, bernama cloud-init.txt dan menempelkan konfigurasi berikut. Untuk contoh ini, buat file di Cloud Shell, bukan di komputer lokal Anda. Anda dapat menggunakan editor pilihan Anda. Masukkan cloud-init.txt editor masuk akal untuk membuat file dan melihat daftar editor yang tersedia. Gunakan editor pilihan Anda. Beberapa pilihan umumnya adalah nano, vim, atau ed. Pastikan bahwa seluruh file cloud-init disalin dengan benar, terutama baris pertama:

SLES Ubuntu Red Hat Enterprise Linux (RHEL)
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Nota

cloud-init memiliki beberapa jenis input, cloud-init akan menggunakan baris pertama customData/userData untuk menunjukkan cara memproses input, misalnya #cloud-config menunjukkan bahwa konten harus diproses sebagai konfigurasi cloud-init.

Keluar dari file dan simpan file sesuai dengan editor. Verifikasi nama file saat keluar.

Langkah terakhir adalah membuat VM dengan perintah az vm create .

Contoh berikut membuat VM bernama ubuntu2204 dan membuat kunci SSH jika belum ada di lokasi kunci default. Untuk menggunakan set tombol tertentu, gunakan opsi --ssh-key-value. --custom-data Gunakan parameter untuk meneruskan file konfigurasi cloud-init Anda. Berikan jalur lengkap ke konfigurasi cloud-init.txt jika Anda menyimpan file di luar direktori kerja Anda saat ini.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

Saat VM dibuat, Azure CLI menampilkan informasi khusus untuk penyebaran Anda. Catat publicIpAddress. Alamat ini digunakan untuk mengakses VM. Dibutuhkan beberapa waktu agar VM dibuat, paket untuk diinstal, dan aplikasi dimulai. Ada tugas latar belakang yang terus berjalan setelah Azure CLI mengembalikan Anda ke prompt. Anda dapat SSH ke VM dan menggunakan langkah-langkah yang diuraikan di bagian Pemecahan Masalah untuk melihat log cloud-init.

Anda juga dapat menyebarkan VM yang diaktifkan cloud-init dengan meneruskan parameter di templat ARM.

Pemecahan masalah cloud-init

Setelah VM disediakan, cloud-init berjalan melalui semua modul dan skrip yang ditentukan --custom-data untuk mengonfigurasi VM. Jika Anda perlu memecahkan masalah kesalahan atau kelalaian dari konfigurasi, Anda perlu mencari nama modul (disk_setup atau runcmd misalnya) di log cloud-init - yang terletak di /var/log/cloud-init.log.

Nota

Tidak setiap kegagalan modul menghasilkan kegagalan konfigurasi cloud-init yang fatal secara keseluruhan. Misalnya, menggunakan runcmd modul, jika skrip gagal, cloud-init masih akan melaporkan provisi berhasil karena modul runcmd dijalankan.

Untuk informasi selengkapnya tentang pengelogan cloud-init, lihat dokumentasi cloud-init

Telemetri

cloud-init mengumpulkan data penggunaan dan mengirimkannya ke Microsoft untuk membantu meningkatkan produk dan layanan kami. Telemetri hanya dikumpulkan selama proses provisi (boot pertama VM). Data yang dikumpulkan membantu kami menyelidiki kegagalan provisi dan memantau performa dan keandalan. Data yang dikumpulkan tidak menyertakan pengidentifikasi apa pun (pengidentifikasi pribadi). Baca pernyataan privasi kami untuk mempelajari lebih lanjut. Beberapa contoh telemetri yang dikumpulkan adalah (ini bukan daftar lengkap): Informasi terkait OS (versi cloud-init, versi distro, versi kernel), metrik performa tindakan provisi VM penting (waktu untuk mendapatkan sewa DHCP, waktu untuk mengambil metadata yang diperlukan untuk mengonfigurasi VM, dll.), log cloud-init, dan log dmesg.

Koleksi telemetri saat ini diaktifkan untuk sebagian besar gambar marketplace kami yang menggunakan cloud-init. Ini diaktifkan dengan menentukan wartawan telemetri KVP untuk cloud-init. Di sebagian besar gambar Azure Marketplace, konfigurasi ini dapat ditemukan dalam file /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Menghapus file ini selama persiapan gambar menonaktifkan pengumpulan telemetri untuk VM apa pun yang dibuat dari gambar ini.

Sampel konten 10-azure-kvp.cfg

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

Langkah berikutnya

Memecahkan masalah dengan cloud-init.

Untuk contoh perubahan konfigurasi cloud-init, lihat dokumen berikut: