Menyiapkan komputer virtual SLES atau openSUSE Leap untuk Azure
Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel Berlaku untuk: ✔️ Set skala seragam
Dalam beberapa kasus, Anda mungkin ingin menggunakan SUSE Linux Enterprise Server (SLES) yang disesuaikan atau openSUSE Leap Linux komputer virtual (VM) di lingkungan Azure Anda dan dapat membangun jenis VM ini melalui otomatisasi. Artikel ini menunjukkan cara membuat dan mengunggah hard disk virtual (VHD) Azure kustom yang berisi sistem operasi SUSE Linux.
Prasyarat
Artikel ini mengasumsikan bahwa Anda sudah menginstal sistem operasi SLES atau openSUSE Leap Linux pada hard disk virtual. Ada beberapa alat untuk membuat file .vhd. Misalnya, Anda dapat menggunakan solusi virtualisasi seperti Hyper-V. Untuk petunjuknya, lihat Menginstal Hyper-V dan membuat komputer virtual.
Catatan penginstalan SLES/openSUSE Leap
- Untuk tips selengkapnya tentang menyiapkan gambar Linux untuk Azure, lihat Catatan penginstalan Umum Linux.
- Azure tidak mendukung file Windows Hard Disk Image (.vhdx). Hanya file VHD (.vhd) yang didukung di luar komputer virtual. Anda dapat mengonversi disk ke format VHD dengan menggunakan Hyper-V Manager atau
Convert-VHD
cmdlet. - Azure mendukung komputer virtual Gen1 (boot BIOS) dan Gen2 (boot UEFI).
- Modul kernel tabel alokasi file virtual (VFAT) harus diaktifkan di kernel.
- Jangan mengonfigurasi partisi swap pada disk OS. Anda dapat mengonfigurasi agen Linux untuk membuat file pertukaran pada disk sumber daya sementara. Langkah-langkah selanjutnya dalam artikel ini memberikan informasi selengkapnya tentang mengonfigurasi ruang pertukaran.
- Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat Anda mengonversi dari disk mentah ke VHD, pastikan ukuran disk mentah adalah kelipatan 1 MB sebelum konversi. Untuk informasi selengkapnya, lihat Catatan penginstalan Umum Linux.
Catatan
Cloud-init versi 21.2 atau yang lebih baru menghapus persyaratan fungsi yang ditentukan pengguna (UDF). Tetapi tanpa udf
modul diaktifkan, CD-ROM tidak akan dipasang selama provisi, yang mencegah data kustom diterapkan. Solusinya adalah menerapkan data pengguna. Namun, tidak seperti data kustom, data pengguna tidak dienkripsi. Untuk informasi selengkapnya, lihat Format data pengguna dalam dokumentasi cloud-init.
Gunakan SUSE Studio
SUSE Studio dapat dengan mudah membuat dan mengelola gambar SLES dan openSUSE Leap untuk Azure dan Hyper-V. SUSE Studio adalah pendekatan yang direkomendasikan untuk menyesuaikan gambar SLES dan openSUSE Leap Anda sendiri.
Sebagai alternatif untuk membangun VHD Anda sendiri, SUSE juga menerbitkan gambar BYOS (bawa langganan Anda sendiri) untuk SLES di VM Depot.
Menyiapkan SLES untuk Azure
Konfigurasikan modul Azure dan Hyper-V jika diperlukan.
Jika hypervisor perangkat lunak Anda tidak Hyper-V, modul lain perlu ditambahkan ke dalam disk RAM awal (initramfs) agar berhasil di-boot di Azure.
Edit file /etc/dracut.conf dan tambahkan baris berikut ke file:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Jalankan
dracut
perintah untuk membangun kembali file initramfs:sudo dracut --verbose --force
Siapkan konsol serial.
Agar berhasil bekerja dengan konsol serial, Anda harus menyiapkan beberapa variabel dalam file /etc/defaults/grub dan membuat ulang GRUB di server:
# Add console=ttyS0 and earlyprintk=ttS0 to the variable. # Remove "splash=silent" and "quiet" options. GRUB_CMDLINE_LINUX_DEFAULT="audit=1 no-scroll fbcon=scrollback:0 mitigations=auto security=apparmor crashkernel=228M,high crashkernel=72M,low console=ttyS0 earlyprintk=ttyS0" # Add "console serial" to GRUB_TERMINAL. GRUB_TERMINAL="console serial" # Set the GRUB_SERIAL_COMMAND variable. GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
Daftarkan sistem SUSE Linux Enterprise Anda untuk memungkinkannya mengunduh pembaruan dan memasang paket.
Perbarui sistem dengan patch terbaru:
sudo zypper update
Instal Azure Linux VM Agent (
waagent
) dan cloud-init:sudo SUSEConnect -p sle-module-public-cloud/15.2/x86_64 (SLES 15 SP2) sudo zypper refresh sudo zypper install python-azure-agent sudo zypper install cloud-init
Aktifkan
waagent
dan cloud-init untuk memulai boot:sudo systemctl enable waagent sudo systemctl enable cloud-init-local.service sudo systemctl enable cloud-init.service sudo systemctl enable cloud-config.service sudo systemctl enable cloud-final.service sudo systemctl daemon-reload sudo cloud-init clean
Perbarui konfigurasi cloud-init:
cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
sudo cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/05_logging.cfg # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF # Make sure mounts and disk_setup are in the init stage: echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
Jika Anda ingin memasang, memformat, dan membuat partisi swap, salah satu opsinya adalah meneruskan konfigurasi cloud-init setiap kali Anda membuat VM.
Opsi lain adalah menggunakan arahan cloud-init dalam gambar untuk mengonfigurasi ruang pertukaran setiap kali VM dibuat:
cat <<EOF | sudo tee -a /etc/systemd/system.conf 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Sebelumnya, Azure Linux Agent digunakan untuk mengonfigurasi ruang pertukaran secara otomatis dengan menggunakan disk sumber daya lokal yang dilampirkan ke komputer virtual setelah komputer virtual disediakan di Azure. Karena cloud-init sekarang menangani langkah ini, Anda tidak boleh menggunakan Agen Linux Azure untuk memformat disk sumber daya atau membuat file pertukaran. Gunakan perintah ini untuk memodifikasi /etc/waagent.conf dengan tepat:
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=auto/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Catatan
Jika Anda menggunakan versi cloud-init yang lebih lama dari 21.2, pastikan
udf
modul diaktifkan. Menghapus atau menonaktifkannya akan menyebabkan kegagalan provisi atau boot. Cloud-init versi 21.2 atau yang lebih baru menghapus persyaratan UDF.Pastikan bahwa file /etc/fstab mereferensikan disk dengan menggunakan UUID-nya (
by-uuid
).Hapus aturan udev dan file konfigurasi adaptor jaringan untuk menghindari pembuatan aturan statis untuk antarmuka Ethernet. Aturan ini dapat menyebabkan masalah saat Anda mengkloning komputer virtual di Microsoft Azure atau Hyper-V.
sudo rm -f /etc/udev/rules.d/70-persistent-net.rules sudo rm -f /etc/udev/rules.d/85-persistent-net-cloud-init.rules sudo rm -f /etc/sysconfig/network/ifcfg-eth*
Kami menyarankan agar Anda mengedit file /etc/sysconfig/network/dhcp dan mengubah
DHCLIENT_SET_HOSTNAME
parameter menjadi yang berikut:DHCLIENT_SET_HOSTNAME="no"
Dalam file /etc/sudoers, komentari atau hapus baris berikut jika ada:
Defaults targetpw # Ask for the password of the target user i.e. root ALL ALL=(ALL) ALL # WARNING! Only use this setting together with 'Defaults targetpw'!
Pastikan bahwa server Secure Shell (SSH) diinstal dan dikonfigurasi untuk memulai pada waktu boot:
sudo systemctl enable sshd
Bersihkan tahap cloud-init:
sudo cloud-init clean --seed --logs
Jalankan perintah berikut untuk mendeprovisi komputer virtual dan menyiapkannya untuk provisi di Azure.
Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.
sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo export HISTSIZE=0 sudo rm -f ~/.bash_history
Siapkan openSUSE 15.4+
Pada panel tengah Hyper-V Manager, pilih komputer virtual.
Pilih Sambungkan untuk membuka jendela untuk komputer virtual.
Di terminal, jalankan perintah
zypper lr
. Jika perintah ini mengembalikan output yang mirip dengan contoh berikut, repositori dikonfigurasi seperti yang diharapkan dan tidak ada penyesuaian yang diperlukan. (Nomor versi mungkin bervariasi.)# Alias Nama Diaktifkan Pemeriksaan GPG Refresh 1 Cloud:Tools_15.4 Cloud:Alat-> Ya (r ) Ya Ya 2 openSUSE_stable_OSS openSUSE_st-> Ya (r ) Ya Ya 3 openSUSE_stable_Updates openSUSE_st-> Ya (r ) Ya Ya Jika pesan "Tidak ada repositori yang ditentukan" muncul dari
zypper lr
repositori harus ditambahkan secara manual.Di bawah ini adalah contoh perintah untuk menambahkan repositori ini (versi dan tautan dapat bervariasi):
sudo zypper ar -f https://download.opensuse.org/update/openSUSE-stable openSUSE_stable_Updates sudo zypper ar -f https://download.opensuse.org/repositories/Cloud:/Tools/15.4 Cloud:Tools_15.4 sudo zypper ar -f https://download.opensuse.org/distribution/openSUSE-stable/repo/oss openSUSE_stable_OSS
Anda kemudian dapat memverifikasi bahwa repositori telah ditambahkan dengan menjalankan perintah
zypper lr
lagi. Jika salah satu repositori pembaruan yang relevan tidak diaktifkan, aktifkan dengan menggunakan perintah berikut:sudo zypper mr -e [NUMBER OF REPOSITORY]
Perbarui kernel ke versi terbaru yang tersedia:
sudo zypper up kernel-default
Atau perbarui sistem operasi dengan semua patch terbaru:
sudo zypper update
Instal Agen Linux Azure:
sudo zypper install WALinuxAgent
Ubah baris boot kernel dalam konfigurasi GRUB Anda untuk menyertakan parameter kernel lainnya untuk Azure. Untuk melakukan ini, buka /boot/grub/menu.lst di editor teks dan pastikan bahwa kernel default menyertakan parameter berikut:
console=ttyS0 earlyprintk=ttyS0
Opsi ini memastikan bahwa semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan Azure dengan masalah penelusuran kesalahan. Selain itu, hapus parameter berikut dari garis boot kernel jika ada:
libata.atapi_enabled=0 reserve=0x1f0,0x8
Kami menyarankan agar Anda mengedit file /etc/sysconfig/network/dhcp dan mengubah
DHCLIENT_SET_HOSTNAME
parameter ke pengaturan berikut:DHCLIENT_SET_HOSTNAME="no"
Dalam file /etc/sudoers, komentari atau hapus baris berikut jika ada. Ini adalah langkah penting.
Defaults targetpw # ask for the password of the target user i.e. root ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot.
Jangan membuat ruang swap pada disk OS.
Agen Linux Azure dapat secara otomatis mengonfigurasi ruang pertukaran dengan menggunakan disk sumber daya lokal yang dilampirkan ke VM setelah provisi di Azure. Disk sumber daya lokal adalah disk sementara dan akan dikosongkan ketika VM dideprovisi.
Setelah Anda menginstal Azure Linux Agent, ubah parameter di /etc/waagent.conf sebagai berikut:
ResourceDisk.Format=n ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=n ResourceDisk.SwapSizeMB=2048 ## NOTE: set the size to whatever you need it to be.
Pastikan bahwa Agen Linux Azure berjalan saat startup:
sudo systemctl enable waagent.service
Jalankan perintah berikut untuk mendeprovisi komputer virtual dan menyiapkannya untuk provisi di Azure.
Jika Anda memigrasikan komputer virtual tertentu dan tidak ingin membuat gambar umum, lewati langkah deprovisi.
sudo rm -f ~/.bash_history # Remove current user history sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history # Remove root user history sudo export HISTSIZE=0
Pilih Tindakan>Matikan di Hyper-V Manager.
Langkah berikutnya
Anda sekarang siap untuk menggunakan SUSE Linux VHD Anda untuk membuat komputer virtual baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.