dukungan cloud-init untuk komputer virtual di Azure

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 ✔️ 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 tersebut dijalankan pada boot pertama setelah sumber daya disediakan oleh Azure.

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

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

gambaran Umum cloud-init

Cloud-init adalah pendekatan yang digunakan luas untuk menyesuaikan VM Linux saat boot pertama kali. 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 #cloud-config atau input lain dengan benar, lihat situs dokumentasi cloud-init. File #cloud-config adalah file teks yang dikodekan di base64.

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

Kami secara aktif bekerja sama dengan mitra distro Linux yang didukung agar gambar yang diaktifkan cloud-init tersedia di Marketplace Azure. Gambar-gambar ini akan membuat penyebaran dan konfigurasi cloud-init Anda bekerja tanpa hambatan dengan VM dan set skala komputer virtual. Awalnya kami berkolaborasi dengan mitra distro Linux yang didukung dan upstram 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 'gambar cloud-init siap' jika gambar sudah dikonfigurasi untuk menggunakan cloud-init.

Kanonis

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
Kanonis 22.04 UbuntuServer 22.04-LTS terbaru yes yes
Canonical 20.04 UbuntuServer 20.04-LTS terbaru yes yes
Canonical 18.04 UbuntuServer 18.04-LTS terbaru yes yes

RHEL

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
RedHat 7 RHEL 7.7, 7.8, 7_9 terbaru yes yes
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 terbaru yes yes
RedHat 9 RHEL 9_0, 9_1 terbaru yes yes
  • Semua SKU RedHat lainnya mulai dari RHEL 7 (versi 7.7) dan RHEL 8 (versi 8.1) termasuk citra Gen1 dan Gen2 diprovisikan menggunakan cloud-init. Cloud-init tidak didukung pada RHEL 6.

CentOS

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
OpenLogic 7 CentOS 7.7, 7.8, 7.9 terbaru yes yes
OpenLogic 8 CentOS 8.1, 8.2, 8.3 terbaru yes yes
  • Semua SKU CentOS lainnya mulai dari CentOS 7 (versi 7.7) dan CentOS 8 (versi 8.1) termasuk citra Gen1 dan Gen2 diprovisikan menggunakan cloud-init. Gambar CentOS 6.10, 7.4, 7.5, dan 7.6 tidak mendukung cloud-init.

Catatan

OpenLogic sekarang menjadi Rogue Wave Software

Oracle

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
Oracle 7 Oracle Linux 77, 78, ol79 terbaru yes yes
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm terbaru yes yes
  • Semua SKU Oracle lainnya mulai dari Oracle 7 (versi 7.7) dan CentOS 8 (versi 8.1) termasuk citra Gen1 dan Gen2 diprovisikan menggunakan cloud-init.

SUSE SLES

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 terbaru yes yes
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 terbaru yes yes
  • Semua SKU SUSE lainnya mulai dari SLES 15 (sp1) dan SLES 12 (sp5) termasuk gambar Gen1 dan Gen2 diprovisikan menggunakan cloud-init.
  • Selain itu citra-citra ini juga diprovisikan dengan cloud-init -
Penerbit/Versi Penawaran SKU / Versi
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp4:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp3:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp2:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-proxy-4-byosgen1:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-server-4-byos:gen1:2020.06.10

Debian

Penerbit/Versi Penawaran SKU Versi gambar cloud-init siap dukungan paket cloud-init di Azure
debian (Gen1) debian-10 10-cloudinit 10:0.20201013.422 yes ya - dukungan dari versi paket: 20.2-2~deb10u1
debian (Gen2) debian-10 10-cloudinit-gen2 0.20201013.422 yes ya - dukungan dari versi paket: 20.2-2~deb10u1

Saat ini Azure Stack akan mendukung penyediaan gambar dengan dukungan 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 sudah memiliki investasi dalam skrip cloud-init untuk mengonfigurasi sistem Linux, tidak diperlukan pengaturan tambahan untuk mengaktifkan proses cloud-init.

cloud-init tidak dapat memproses ekstensi Azure, jadi WALA masih diperlukan dalam gambar untuk memproses ekstensi, tetapi harus menonaktifkan kode penyediaannya, untuk gambar distro Linux yang didukung dan dikonversi ke penyediaan oleh cloud-init, WALA harus dipasang, dan disiapkan 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 --custom-data dengan pengalih, semua yang terkandung dalam data kustom Anda akan tersedia untuk cloud-init saat VM melakukan 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 citra, cloud-init menggunakan metadata yang tersedia di Instance Metadata Service Azure untuk memprovisikan 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 dengan dukungan cloud-init

Menyebarkan komputer virtual dengan dukungan cloud-init semudah mereferensikan distribusi dengan dukungan cloud-init selama penyebaran. Pengelola distribusi Linux harus memilih untuk mengaktifkan dan mengintegrasikan cloud-init ke dalam gambar dasar Azure yang diterbitkan. 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. Ketik sensible-editor cloud-init.txt untuk membuat file dan melihat daftar editor yang tersedia. Dalam contoh ini, kita menggunakan editor nano . Pilih #1 untuk menggunakan editor nano. Pastikan bahwa seluruh file cloud-init disalin dengan benar, terutama baris pertama:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Catatan

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

Tekan Ctrl + X untuk keluar dari file, ketik y untuk menyimpan file, dan tekan Enter untuk mengonfirmasi nama file saat keluar.

Langkah terakhir adalah membuat VM dengan perintah az vm create.

Contoh berikut membuat VM bernama centos74 dan membuat kunci SSH jika belum ada di lokasi kunci default. Untuk menggunakan set tombol tertentu, gunakan opsi --ssh-key-value. Gunakan parameter --custom-data 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 centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

Jika VM telah dibuat, Azure CLI akan menampilkan informasi khusus untuk penyebaran Anda. Catat publicIpAddress. Alamat ini digunakan untuk mengakses VM. Perlu beberapa waktu untuk membuat VM, paket yang akan dipasang, dan aplikasi yang akan dimulai. Ada proses di latar belakang yang terus berjalan setelah Azure CLI mengembalikan Anda ke perintah. Anda dapat menggunakan SSH ke VM dan menggunakan langkah-langkah yang diuraikan di bagian Pemecahan Masalah untuk melihat log cloud-init.

Anda juga dapat menyebarkan VM dengan dukungan cloud-init dengan meneruskan parameter dalam templat ARM.

Pemecahan masalah cloud-init

Setelah VM disediakan, cloud-init akan berjalan melalui semua modul dan skrip yang ditentukan di --custom-data untuk mengonfigurasi VM. Jika Anda harus 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.

Catatan

Tidak semua kegagalan modul mengakibatkan kegagalan konfigurasi cloud-init secara keseluruhan yang fatal. Misalnya, menggunakan modul runcmd, jika skrip gagal, cloud-init akan tetap melaporkan penyediaan berhasil karena modul runcmd dijalankan.

Untuk detail 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 mesin virtual). Data yang dikumpulkan membantu kami menyelidiki kegagalan provisi dan memantau performa serta 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 pelapor telemetri KVP untuk cloud-init. Di sebagian besar gambar Marketplace Azure, konfigurasi ini dapat ditemukan di file /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Menghapus file ini selama persiapan citra akan menonaktifkan pengumpulan telemetri untuk mesin virtual apa pun yang dibuat dari citra ini.

Konten sampel 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: