Przygotowywanie maszyny wirtualnej z systemem Ubuntu dla platformy Azure
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy ✔️ skalowania
System Ubuntu publikuje teraz oficjalne wirtualne dyski twarde platformy Azure do pobrania na stronie https://cloud-images.ubuntu.com/. Jeśli musisz utworzyć własny wyspecjalizowany obraz z systemem Ubuntu dla platformy Azure, zamiast korzystać z poniższej procedury ręcznej, zaleca się rozpoczęcie od tych znanych wirtualnych dysków twardych i dostosowanie ich zgodnie z potrzebami. Najnowsze wersje obrazów można zawsze znaleźć w następujących lokalizacjach:
- Ubuntu 18.04/Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04/Ogniskowa: focal-server-cloudimg-amd64-azure.vhd.zip
Wymagania wstępne
W tym artykule założono, że system operacyjny Ubuntu Linux został już zainstalowany na wirtualnym dysku twardym. Istnieje wiele narzędzi do tworzenia plików vhd, na przykład rozwiązania wirtualizacji, takiego jak Hyper-V. Aby uzyskać instrukcje, zobacz Instalowanie roli funkcji Hyper-V i Konfigurowanie maszyny wirtualnej.
Uwagi dotyczące instalacji systemu Ubuntu
- Zobacz również Ogólne uwagi dotyczące instalacji systemu Linux , aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure.
- Format VHDX nie jest obsługiwany na platformie Azure, tylko stały dysk VHD. Dysk można przekonwertować na format VHD przy użyciu Menedżera funkcji Hyper-V lub
Convert-VHD
polecenia cmdlet. - Podczas instalowania systemu Linux zaleca się używanie partycji standardowych, a nie LVM (często jest to ustawienie domyślne dla wielu instalacji). Pozwoli to uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli dysk systemu operacyjnego kiedykolwiek musi być dołączony do innej maszyny wirtualnej w celu rozwiązywania problemów. LVM lub RAID mogą być używane na dyskach danych, jeśli jest to preferowane.
- Nie konfiguruj partycji wymiany ani pliku swapfile na dysku systemu operacyjnego. Agent aprowizacji cloud-init można skonfigurować do tworzenia pliku wymiany lub partycji wymiany na tymczasowym dysku zasobu. Więcej informacji na ten temat można znaleźć w poniższych krokach.
- Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku pierwotnego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku jest wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zobacz Uwagi dotyczące instalacji systemu Linux .
Kroki ręczne
Uwaga
Przed podjęciem próby utworzenia własnego niestandardowego obrazu systemu Ubuntu dla platformy Azure rozważ użycie wstępnie utworzonych i przetestowanych obrazów.https://cloud-images.ubuntu.com/
W środkowym okienku Menedżera funkcji Hyper-V wybierz maszynę wirtualną.
Kliknij przycisk Połącz , aby otworzyć okno dla maszyny wirtualnej.
Zastąp bieżące repozytoria na obrazie, aby użyć repozytorium platformy Azure systemu Ubuntu.
Przed rozpoczęciem edycji
/etc/apt/sources.list
zaleca się utworzenie kopii zapasowej:# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
Ubuntu 18.04 i 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
Obrazy platformy Azure w systemie Ubuntu używają teraz jądra dostosowanego do platformy Azure. Zaktualizuj system operacyjny do najnowszego jądra dostosowanego do platformy Azure i zainstaluj narzędzia platformy Azure dla systemu Linux (w tym zależności funkcji Hyper-V), uruchamiając następujące polecenia:
Ubuntu 18.04 i 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
Zmodyfikuj wiersz rozruchu jądra dla programu Grub, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby to zrobić, otwórz
/etc/default/grub
w edytorze tekstów, znajdź zmienną o nazwieGRUB_CMDLINE_LINUX_DEFAULT
(lub dodaj ją w razie potrzeby) i zmodyfikuj ją, aby uwzględnić następujące parametry:GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
Zapisz i zamknij ten plik, a następnie uruchom polecenie
sudo update-grub
. Dzięki temu wszystkie komunikaty konsoli będą wysyłane do pierwszego portu szeregowego, co może pomóc w obsłudze technicznej platformy Azure w przypadku problemów z debugowaniem.Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Jest to zwykle wartość domyślna.
Zainstaluj pakiet cloud-init (agent aprowizacji) i agenta systemu Linux platformy Azure (program obsługi rozszerzeń gościa). Narzędzie Cloud-init używa
netplan
do konfigurowania konfiguracji sieci systemowej (podczas aprowizacji i każdego kolejnego rozruchu) orazgdisk
do partycjonowania dysków zasobów.# sudo apt update # sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Uwaga
Pakiet
walinuxagent
może usunąćNetworkManager
pakiety iNetworkManager-gnome
, jeśli są zainstalowane.Usuń domyślne konfiguracje cloud-init i
netplan
pozostałe artefakty, które mogą powodować konflikt z aprowizacją pakietu cloud-init na platformie 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
Skonfiguruj plik cloud-init, aby aprowizować system przy użyciu źródła danych platformy 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
Skonfiguruj agenta systemu Linux platformy Azure, aby polegał na inicjowaniu obsługi administracyjnej w chmurze. Zapoznaj się z projektem WALinuxAgent , aby uzyskać więcej informacji na temat tych opcji.
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
Czyszczenie artefaktów i dzienników środowiska uruchomieniowego agenta platformy Azure dla systemu Linux w chmurze i agenta platformy 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
Uruchom następujące polecenia, aby usunąć aprowizację maszyny wirtualnej i przygotować ją do aprowizacji na platformie Azure:
Uwaga
Polecenie
sudo waagent -force -deprovision+user
uogólnia obraz, próbując oczyścić system i przygotować go do ponownej aprowizacji. Opcja+user
usuwa ostatnie aprowizowane konto użytkownika i skojarzone dane.Ostrzeżenie
Anulowanie aprowizacji przy użyciu powyższego polecenia nie gwarantuje, że obraz jest czyszczone ze wszystkich poufnych informacji i jest odpowiedni do redystrybucji.
# sudo waagent -force -deprovision+user # rm -f ~/.bash_history # export HISTSIZE=0 # logout
Kliknij pozycję Akcja —> zamknij w Menedżerze funkcji Hyper-V.
Platforma Azure akceptuje tylko dyski VHD o stałym rozmiarze. Jeśli dysk systemu operacyjnego maszyny wirtualnej nie jest dyskiem VHD o stałym rozmiarze, użyj
Convert-VHD
polecenia cmdlet programu PowerShell i określ-VHDType Fixed
opcję . Zapoznaj się z dokumentami wConvert-VHD
tym miejscu: Convert-VHD.Aby przenieść maszynę wirtualną generacji 2 na platformę Azure, wykonaj następujące kroki:
Zmień katalog na katalog EFI rozruchowego:
# cd /boot/efi/EFI
Skopiuj katalog ubuntu do nowego katalogu o nazwie boot:
# sudo cp -r ubuntu/ boot
Zmień katalog na katalog rozruchowy nowo utworzona:
# cd boot
Zmień nazwę pliku shimx64.efi:
# sudo mv shimx64.efi bootx64.efi
Zmień nazwę pliku grub.cfg na bootx64.cfg:
# sudo mv grub.cfg bootx64.cfg
Następne kroki
Teraz możesz używać wirtualnego dysku twardego z systemem Ubuntu Linux do tworzenia nowych maszyn wirtualnych na platformie Azure. Jeśli po raz pierwszy przekazujesz plik vhd na platformę Azure, zobacz Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego.