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 citra 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 ada 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 Penginstalan 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 komputer 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
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 sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo apt-get update
  1. 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:
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
sudo apt full-upgrade
sudo reboot
  1. 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.

  1. Pastikan server SSH diinstal dan dikonfigurasi untuk memulai pada saat boot. Biasanya hal ini merupakan penyebabnya.

  2. 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.

  1. Hapus konfigurasi default cloud-init dan artefak netplan sisa yang mungkin bertentangan dengan provisi cloud-init di Azure:
sudo 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
sudo rm -f /etc/cloud/ds-identify.cfg
sudo rm -f /etc/netplan/*.yaml
  1. Konfigurasikan cloud-init untuk menyediakan sistem menggunakan sumber data Azure:
cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg
datasource_list: [ Azure ]
EOF

cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg
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 <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg
reporting:
  logging:
    type: log
  telemetry:
    type: hyperv
EOF
  1. Konfigurasikan agen Linux Azure untuk mengandalkan cloud-init untuk melakukan provisi. Lihatlah proyek WALinuxAgent untuk informasi lebih lanjut tentang opsi ini.
sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/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
cat <<EOF | sudo tee -a /etc/waagent.conf
# 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
  1. 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
  1. Jalankan perintah berikut untuk membatalkan penyediaan komputer virtual dan persiapkan komputer virtual untuk disediakan 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

Pembatalan provisi menggunakan perintah di atas tidak menjamin gambar dihapus dari semua informasi sensitif dan cocok untuk didistribusikan ulang.

sudo waagent -force -deprovision+user
sudo rm -f ~/.bash_history
  1. Klik Tindakan -> Matikan di Hyper-V Manager.

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

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

  4. Ubah direktori ke direktori EFI boot:

cd /boot/efi/EFI
  1. Salin direktori ubuntu ke direktori baru bernama boot:
sudo cp -r ubuntu/ boot
  1. Ubah direktori ke direktori boot yang baru dibuat:
cd boot
  1. Ganti nama file shimx64.efi:
sudo mv shimx64.efi bootx64.efi
  1. 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 komputer virtual Linux dari disk kustom.