dukungan cloud-init untuk komputer virtual di Azure
Berlaku untuk: ✔️ VM Linux ✔️ Set skala fleksibel
Artikel ini menjelaskan dukungan yang ada untuk cloud-init untuk mengonfigurasi komputer virtual (VM) atau set skala komputer virtual pada waktu penyediaan di Azure. Konfigurasi cloud-init tersebut dijalankan pada boot pertama setelah sumber daya disediakan oleh Azure.
Penyediaan VM adalah proses ketika Azure akan menurunkan nilai parameter Pembuatan VM Create Anda, seperti nama host, nama pengguna, kata sandi, dll., dan membuatnya tersedia untuk VM saat boot-up. '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 aktif bekerja sama dengan mitra distro Linux kami yang didukung agar gambar dengan dukungan 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 OS distro Linux yang didukung di Azure, dukungan paket, dan kemudian dukungan gambar:
- Dokumen 'dukungan paket cloud-init di Azure' yang mendukung paket cloud-init atau dalam pratinjau, sehingga Anda dapat menggunakan paket tersebut 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 |
|---|---|---|---|---|---|
| Canonical 20.04 | UbuntuServer | 20.04-LTS | terbaru | ya | ya |
| Canonical 18.04 | UbuntuServer | 18.04-LTS | terbaru | ya | ya |
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 | ya | ya |
| RedHat 8 | RHEL | 8.1, 8.2, 8_3, 8_4 | terbaru | ya | ya |
- 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. Citra RHEL 6 tidak mendukung cloud-init.
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 | ya | ya |
| OpenLogic 8 | CentOS | 8.1, 8.2, 8.3 | terbaru | ya | ya |
- 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. Citra 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 | ya | ya |
| Oracle 8 | Oracle Linux | 81, ol82, ol83-lvm, ol84-lvm | terbaru | ya | ya |
- 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 | ya | ya |
| SUSE 12 | SLES (SUSE Linux Enterprise Server) | sp5 | terbaru | ya | ya |
- 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 | ya | ya - dukungan dari versi paket: 20.2-2~deb10u1 |
| debian (Gen2) | debian-10 | 10-cloudinit-gen2 | 0.20201013.422 | ya | 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 agar pelanggan cloud-init yang ada dapat menggunakan skrip cloud-init mereka saat ini, atau agar pelanggan baru dapat 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 pengalih Cli Azure --custom-data pada waktu penyediaan, cloud-init atau WALA mengambil parameter penyediaan 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 karena waktu habis. Ini tidak berlaku untuk WALA, jika Anda mengubah default WALA untuk memproses data kustom, maka tidak akan dapat melebihi total alokasi waktu penyediaan VM 40 menit, dengan demikian, Pembuatan VM 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. Perhatikan bahwa 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 bahwa gambar yang ingin disebarkan didukungan 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 yang disebarkan dan dikelola sumber daya Azure.
Contoh berikut ini 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 apa pun yang diinginkan. Ketik sensible-editor cloud-init.txt untuk membuat file dan melihat daftar editor yang tersedia. Pilih #1 untuk menggunakan editor nano. Pastikan bahwa seluruh file cloud-init disalin dengan benar, terutama baris pertama:
#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 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 informasi pengidentifikasi pribadi apa pun. 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 mesin virtual penting (waktu untuk memperoleh sewa DHCP, waktu untuk mengambil metadata yang diperlukan untuk mengonfigurasi mesin virtual, dll.), log cloud-init, dan log dmesg.
Pengumpulan telemetri saat ini diaktifkan untuk sebagian besar citra marketplace kami yang menggunakan cloud-init. Ini diaktifkan dengan menentukan pelapor telemetri KVP untuk cloud-init. Dalam sebagian besar citra marketplace Azure, konfigurasi ini dapat ditemukan dalam 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: