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

  1. Konfigurasikan modul Azure dan Hyper-V jika diperlukan.

    Jika hypervisor perangkat lunak Anda bukan Hyper-V, modul lain perlu ditambahkan ke dalam disk RAM awal (initramfs) agar berhasil 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
    
  2. 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
    
  3. Daftarkan sistem SUSE Linux Enterprise Anda untuk memungkinkannya mengunduh pembaruan dan memasang paket.

  4. Perbarui sistem dengan patch terbaru:

    sudo zypper update
    
  5. 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
    
  6. 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
    
  7. 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
    
  8. 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
    
  9. 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.

  10. Pastikan bahwa file /etc/fstab mereferensikan disk dengan menggunakan UUID-nya (by-uuid).

  11. 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*
    
  12. Kami menyarankan agar Anda mengedit file /etc/sysconfig/network/dhcp dan mengubah DHCLIENT_SET_HOSTNAME parameter menjadi yang berikut:

    DHCLIENT_SET_HOSTNAME="no"
    
  13. 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'!
    
  14. Pastikan bahwa server Secure Shell (SSH) diinstal dan dikonfigurasi untuk memulai pada waktu boot:

    sudo systemctl enable sshd
    
  15. Bersihkan tahap cloud-init:

    sudo cloud-init clean --seed --logs
    
  16. 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
    

Menyiapkan openSUSE 15.2+

  1. Pada panel tengah Hyper-V Manager, pilih komputer virtual.

  2. Pilih Koneksi untuk membuka jendela untuk komputer virtual.

  3. 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 Aktif Refresh
    1 Cloud:Tools_15.2 Cloud:Tools_15.2 Ya Ya
    2 openSUSE_15.2_OSS openSUSE_15.2_OSS Ya Ya
    3 openSUSE_15.2_Updates openSUSE_15.2_Updates Ya Ya

    Jika perintah mengembalikan "Tidak ada repositori yang ditentukan," gunakan perintah berikut untuk menambahkan repositori ini:

    sudo zypper ar -f http://download.opensuse.org/repositories/Cloud:Tools/openSUSE_15.2 Cloud:Tools_15.2
    sudo zypper ar -f https://download.opensuse.org/distribution/15.2/repo/oss openSUSE_15.2_OSS
    sudo zypper ar -f http://download.opensuse.org/update/15.2 openSUSE_15.2_Updates
    

    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]
    
  4. Perbarui kernel ke versi terbaru yang tersedia:

    sudo zypper up kernel-default
    

    Atau perbarui sistem operasi dengan semua patch terbaru:

    sudo zypper update
    
  5. Instal Agen Linux Azure:

    sudo zypper install WALinuxAgent
    
  6. 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
    
  7. Kami menyarankan agar Anda mengedit file /etc/sysconfig/network/dhcp dan mengubah DHCLIENT_SET_HOSTNAME parameter ke pengaturan berikut:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. 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'!
    
  9. Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot.

  10. 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.
    
  11. Pastikan bahwa Agen Linux Azure berjalan saat startup:

    sudo systemctl enable waagent.service
    
  12. 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
    
  13. Pilih Tindakan>Matikan di Manajer Hyper-V.

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.