Udostępnij za pośrednictwem


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 (VHD) do pobrania na stronie internetowej Obrazy w chmurze systemu Ubuntu. Jeśli musisz utworzyć własny wyspecjalizowany obraz z systemem Ubuntu dla platformy Azure zamiast skorzystać z poniższej procedury ręcznej, zacznij od tych znanych roboczych dysków VHD i dostosuj je zgodnie z potrzebami. Najnowsze wersje obrazów zawsze można znaleźć w następujących lokalizacjach:

Wymagania wstępne

W tym artykule założono, że na dysku VHD zainstalowano już system operacyjny Ubuntu Linux. Istnieje wiele narzędzi do tworzenia plików vhd. Przykładem jest rozwiązanie wirtualizacji, takie jak funkcja Hyper-V. Aby uzyskać instrukcje, zobacz Instalowanie roli funkcji Hyper-V i konfigurowanie maszyny wirtualnej.

Informacje o instalacji systemu Ubuntu

  • Aby uzyskać więcej wskazówek dotyczących przygotowywania systemu Linux na platformę Azure, zobacz Ogólne informacje o instalacji systemu Linux.
  • 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 menedżera woluminów logicznych (LVM), który jest często domyślny dla wielu instalacji. Te partycje standardowe unikają konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli podczas rozwiązywania problemów należy dołączyć dysk systemu operacyjnego do innej maszyny wirtualnej. LVM lub RAID można również używać na dyskach danych.
  • Nie konfiguruj partycji wymiany ani pliku wymiany na dysku systemu operacyjnego. Agenta aprowizacji można skonfigurować cloud-init do utworzenia pliku wymiany lub partycji wymiany na dysku zasobów tymczasowych. Aby uzyskać więcej informacji na temat tego procesu, zobacz następujące kroki.
  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Podczas konwertowania z dysku nieprzetworzonego na dysk VHD należy upewnić się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją. Aby uzyskać więcej informacji, zobacz Informacje o 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 ze strony internetowej Obrazów w chmurze systemu Ubuntu.

  1. W środkowym okienku Menedżera funkcji Hyper-V wybierz maszynę wirtualną.

  2. Wybierz pozycję Połącz , aby otworzyć okno dla maszyny wirtualnej.

  3. Zastąp bieżące repozytoria na obrazie, aby użyć repozytorium platformy Azure systemu Ubuntu.

    Przed rozpoczęciem edycji /etc/apt/sources.listzalecamy utworzenie kopii zapasowej:

    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
    
  4. Obrazy platformy Ubuntu Azure korzystają teraz z 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):

    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
    
  5. Zmodyfikuj wiersz rozruchu jądra dla programu GRUB, aby uwzględnić dodatkowe parametry jądra dla platformy Azure. Aby wykonać ten krok, otwórz /etc/default/grub w edytorze tekstów, znajdź zmienną o nazwie GRUB_CMDLINE_LINUX_DEFAULT (lub dodaj ją w razie potrzeby) i edytuj ją, aby uwzględnić następujące parametry:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
    
  6. Zapisz i zamknij ten plik, a następnie uruchom polecenie sudo update-grub. Ten krok gwarantuje, że wszystkie komunikaty konsoli są wysyłane do pierwszego portu szeregowego, co może pomóc pomocy technicznej platformy Azure w rozwiązywaniu problemów z debugowaniem.

  7. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. To ustawienie jest zwykle ustawieniem domyślnym.

  8. Zainstaluj cloud-init (agent aprowizacji) i agenta systemu Linux platformy Azure (program obsługi rozszerzeń gościa). Cloud-init program używa netplan do konfigurowania konfiguracji sieci systemowej (podczas aprowizacji i każdego kolejnego rozruchu) oraz gdisk 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 i NetworkManager-gnome , jeśli są zainstalowane.

  9. Usuń cloud-init domyślne konfiguracje i netplan pozostałe artefakty, które mogą powodować konflikt z cloud-init aprowizowaniem na platformie 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
    
  10. Skonfiguruj cloud-init obsługę administracyjną systemu przy użyciu źródła danych platformy 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
    
  11. Skonfiguruj agenta systemu Linux platformy Azure, aby polegał na cloud-init wykonaniu aprowizacji. Aby uzyskać więcej informacji na temat tych opcji, zapoznaj się z projektem WALinuxAgent.

    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
    
  12. Artefakty cloud-init i dzienniki środowiska uruchomieniowego agenta platformy Azure i systemu Linux:

    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
    
  13. Anulowanie aprowizacji maszyny wirtualnej i przygotowanie jej 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 ponownego aprowizowania. Opcja +user usuwa ostatnie aprowizowane konto użytkownika i skojarzone dane.

    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    

    Ostrzeżenie

    Anulowanie aprowizacji przy użyciu poprzedniego polecenia nie gwarantuje, że obraz jest czyszczone ze wszystkich poufnych informacji i nadaje się do redystrybucji.

  14. Wybierz pozycję Akcja>Zamknij w Menedżerze funkcji Hyper-V.

  15. 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ę. Aby uzyskać więcej informacji, zapoznaj się z dokumentami dotyczącymi Convert-VHDfunkcji Convert-VHD.

  16. Aby przenieść maszynę wirtualną generacji 2 na platformę Azure, wykonaj następujące kroki:

    1. Zmień katalog na boot EFI katalog:

      cd /boot/efi/EFI
      
    2. ubuntu Skopiuj katalog do nowego katalogu o nazwie boot:

      sudo cp -r ubuntu/ boot
      
    3. Zmień katalog na nowo utworzony katalog rozruchowy:

      cd boot
      
    4. shimx64.efi Zmień nazwę pliku:

      sudo mv shimx64.efi bootx64.efi
      
    5. Zmień nazwę pliku na grub.cfgbootx64.cfg:

      sudo mv grub.cfg bootx64.cfg
      

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.