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 tersebut 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 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 24.04 | UbuntuServer | 22.04-LTS | terbaru | yes | yes |
Kanonis 22.04 | UbuntuServer | 22.04-LTS | terbaru | yes | yes |
Canonical 20.04 | UbuntuServer | 20.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.
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 |
Debian
Penerbit/Versi | Penawaran | SKU | Versi | 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 | yes | yes |
debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.991 | yes | yes |
debian-10 | Debian | 10-cloudinit-gen2 | Debian:debian-10:10-cloudinit-gen2:0.0.999 | yes | yes |
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 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 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 --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. 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 | 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.
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
. 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 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. 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 berjalan melalui semua modul dan skrip yang ditentukan --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 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 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 wartawan 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 gambar menonaktifkan pengumpulan telemetri untuk VM apa pun yang dibuat dari gambar 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: