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: