Menyiapkan komputer virtual Ubuntu untuk Azure

Berlaku untuk: ✔️ Mesin virtual Linux ✔️ Set skala Fleksibel

Ubuntu sekarang menerbitkan Azure VHD resmi untuk diunduh di https://cloud-images.ubuntu.com/. Jika Anda perlu membangun gambar Ubuntu khusus Anda sendiri untuk Azure, daripada menggunakan prosedur manual di bawah ini, disarankan untuk memulai dengan VHD kerja yang diketahui ini dan menyesuaikan sesuai kebutuhan. Rilis gambar terbaru selalu dapat ditemukan di lokasi berikut:

Prasyarat

Artikel ini mengasumsikan bahwa Anda telah menginstal sistem operasi Linux Ubuntu ke hard disk virtual. Beberapa alat hadir untuk membuat file .vhd, misalnya solusi virtualisasi seperti Hyper-V. Untuk petunjuk penggunaan, lihatPasang Peran Hyper-V dan konfigurasikan Komputer Virtual.

Catatan instalasi Ubuntu

  • Lihat juga Catatan Instalasi Linux Umum untuk tips lebih lanjut tentang persiapan Linux untuk Azure.
  • Format VHDX tidak didukung di Azure, hanya VHD tetap. Anda dapat mengonversi disk ke format VHD menggunakan Hyper-V Manager atau Convert-VHD cmdlet.
  • Saat menginstal sistem Linux, disarankan agar Anda menggunakan partisi standar daripada LVM (seringkali default untuk banyak penginstalan). Hal ini akan menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dipasang ke VM lain untuk pemecahan masalah. LVM atau RAID dapat digunakan pada disk data jika diinginkan.
  • Jangan mengonfigurasi partisi swap atau swapfile pada disk OS. Agen penyediaan cloud-init dapat dikonfigurasi untuk membuat file swap atau partisi swap pada disk sumber daya sementara. Informasi lebih lanjut dapat ditemukan dalam langkah-langkah di bawah ini.
  • Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat mengonversi dari disk mentah ke VHD, Anda harus memastikan bahwa ukuran disk mentah adalah kelipatan 1MB sebelum konversi. Untuk informasi selengkapnya, lihat Catatan Instalasi Linux.

Langkah-langkah Manual

Catatan

Sebelum mencoba membuat gambar Ubuntu kustom Anda sendiri untuk Azure, silakan pertimbangkan untuk menggunakan gambar bawaan dan yang diuji sebagai https://cloud-images.ubuntu.com/ gantinya.

  1. Di panel tengah Hyper-V Manager, pilih mesin virtual.

  2. Klik Sambungkan untuk membuka jendela untuk mesin virtual.

  3. Ganti repositori saat ini dalam gambar untuk menggunakan repositori Azure Ubuntu.

    Sebelum mengedit /etc/apt/sources.list, disarankan untuk membuat cadangan:

    # sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    

    Ubuntu 18.04 dan Ubuntu 20.04:

    # sudo sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu\//http:\/\/azure\.archive\.ubuntu\.com\/ubuntu\//g' /etc/apt/sources.list
    # sudo sed -i 's/http:\/\/[a-z][a-z]\.archive\.ubuntu\.com\/ubuntu\//http:\/\/azure\.archive\.ubuntu\.com\/ubuntu\//g' /etc/apt/sources.list
    # sudo apt-get update
    
  4. Gambar Ubuntu Azure sekarang menggunakan kernel yang disesuaikan dengan Azure. Perbarui sistem operasi ke kernel terbaru yang disesuaikan azure dan instal alat Linux Azure (termasuk dependensi Hyper-V) dengan menjalankan perintah berikut:

    Ubuntu 18.04 dan Ubuntu 20.04:

    # sudo apt update
    # sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure
    (recommended) # sudo apt full-upgrade
    
    # sudo reboot
    
  5. Ubah garis boot kernel untuk Grub agar menyertakan parameter kernel tambahan untuk Azure. Untuk melakukan ini agar terbuka /etc/default/grubdi editor teks, cari variabel yang disebut GRUB_CMDLINE_LINUX_DEFAULT (atau tambahkan jika diperlukan) dan edit untuk menyertakan parameter berikut:

     GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
    

    Simpan dan tutup file ini, lalu jalankan sudo update-grub. Ini akan memastikan semua pesan konsol dikirim ke port serial pertama, yang dapat membantu dukungan teknis Azure dengan masalah debugging.

  6. Pastikan bahwa server SSH diinstal, dan dikonfigurasi untuk memulai pada waktu boot. Biasanya hal ini merupakan penyebabnya.

  7. Instal cloud-init (agen penyediaan) dan Azure Linux Agent (penangan ekstensi tamu). Cloud-init menggunakan netplan untuk konfigurasi jaringan sistem (selama provisi dan setiap boot berikutnya) dan gdisk ke disk sumber daya partisi.

    # sudo apt update
    # sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
    

    Catatan

    walinuxagentPaket dapat menghapus NetworkManager dan NetworkManager-gnome paket, jika mereka diinstal.

  8. Hapus konfigurasi default cloud-init dan artefak netplan sisa yang mungkin bertentangan dengan provisi cloud-init di Azure:

    # rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg
    # rm -f /etc/cloud/ds-identify.cfg
    # rm -f /etc/netplan/*.yaml
    
  9. Konfigurasikan cloud-init untuk menyediakan sistem menggunakan sumber data Azure:

     # cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg << EOF
     datasource_list: [ Azure ]
    EOF
    
     # cat > /etc/cloud/cloud.cfg.d/90-azure.cfg << EOF
    system_info:
       package_mirrors:
         - arches: [i386, amd64]
           failsafe:
             primary: http://archive.ubuntu.com/ubuntu
             security: http://security.ubuntu.com/ubuntu
           search:
             primary:
               - http://azure.archive.ubuntu.com/ubuntu/
             security: []
         - arches: [armhf, armel, default]
           failsafe:
             primary: http://ports.ubuntu.com/ubuntu-ports
             security: http://ports.ubuntu.com/ubuntu-ports
    EOF
    
     # cat > /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF
    reporting:
      logging:
        type: log
      telemetry:
        type: hyperv
    EOF
    
  10. Konfigurasikan agen Linux Azure untuk mengandalkan cloud-init untuk melakukan provisi. Lihatlah proyek WALinuxAgent untuk informasi lebih lanjut tentang opsi ini.

    sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    cat >> /etc/waagent.conf << EOF
    # For Azure Linux agent version >= 2.2.45, this is the option to configure,
    # enable, or disable the provisioning behavior of the Linux agent.
    # Accepted values are auto (default), waagent, cloud-init, or disabled.
    # A value of auto means that the agent will rely on cloud-init to handle
    # provisioning if it is installed and enabled, which in this case it will.
    Provisioning.Agent=auto
    EOF
    
  11. Bersihkan cloud-init dan artefak dan log runtime agen Linux Azure:

    # sudo cloud-init clean --logs --seed
    # sudo rm -rf /var/lib/cloud/
    # sudo systemctl stop walinuxagent.service
    # sudo rm -rf /var/lib/waagent/
    # sudo rm -f /var/log/waagent.log
    
  12. Jalankan perintah berikut untuk mendeprovisi komputer virtual dan persiapkan untuk penyediaan di Azure:

    Catatan

    Perintah sudo waagent -force -deprovision+user menggeneralisasi citra dengan mencoba membersihkan sistem dan membuatnya cocok untuk provisi ulang. +user Opsi ini menghapus akun pengguna terakhir yang disediakan dan data terkait.

    Peringatan

    Deprovisi menggunakan perintah ini tidak menjamin bahwa citra akan dibersihkan dari semua informasi sensitif atau cocok untuk didistribusikan kembali.

    # sudo waagent -force -deprovision+user
    # rm -f ~/.bash_history
    # export HISTSIZE=0
    # logout
    
  13. Klik Tindakan -> Matikan pada Pengelola Hyper-V.

  14. Azure hanya menerima VHD ukuran tetap. Jika disk OS VM bukan VHD ukuran tetap, gunakan Convert-VHD cmdlet PowerShell dan tentukan opsinya -VHDType Fixed . Silakan lihat dokumen untuk Convert-VHDdi sini: Convert-VHD.

  15. Untuk menghadirkan VM Generasi 2 di Azure, ikuti langkah-langkah berikut:

    1. Ubah direktori ke direktori EFI boot:

      # cd /boot/efi/EFI
      
    2. Salin direktori ubuntu ke direktori baru bernama boot:

      # sudo cp -r ubuntu/ boot
      
    3. Ubah direktori ke direktori boot yang baru dibuat:

      # cd boot
      
    4. Ganti nama file shimx64.efi:

      # sudo mv shimx64.efi bootx64.efi
      
    5. Ganti nama file grub.cfg menjadi bootx64.cfg:

      # sudo mv grub.cfg bootx64.cfg 
      

Langkah berikutnya

Anda sekarang siap menggunakan hard disk virtual Ubuntu Linux Anda untuk membuat komputer virtual baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat VM Linux dari disk kustom.