Een virtuele Ubuntu-machine voor Azure voorbereiden

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

Ubuntu publiceert nu officiële Azure VHD's om te downloaden op https://cloud-images.ubuntu.com/. Als u uw eigen gespecialiseerde Ubuntu-installatiekopie voor Azure moet bouwen, in plaats van de handmatige procedure hieronder te gebruiken, is het raadzaam om te beginnen met deze bekende werkende VHD's en zo nodig aan te passen. De nieuwste versies van installatiekopieën vindt u altijd op de volgende locaties:

Vereisten

In dit artikel wordt ervan uitgegaan dat u al een Ubuntu Linux-besturingssysteem hebt geïnstalleerd op een virtuele harde schijf. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken, bijvoorbeeld een virtualisatieoplossing zoals Hyper-V. Zie De Hyper-V-rol installeren en een virtuele machine configureren voor instructies.

Ubuntu-installatieopmerkingen

  • Zie ook Algemene opmerkingen bij de Installatie van Linux voor meer tips over het voorbereiden van Linux voor Azure.
  • De VHDX-indeling wordt niet ondersteund in Azure, alleen vaste VHD. U kunt de schijf converteren naar VHD-indeling met Hyper-V-beheer of de Convert-VHD cmdlet.
  • Bij het installeren van het Linux-systeem wordt aanbevolen dat u standaardpartities gebruikt in plaats van LVM (vaak de standaardinstelling voor veel installaties). Dit voorkomt conflicten met de LVM-naam met gekloonde VM's, met name als een besturingssysteemschijf ooit moet worden gekoppeld aan een andere VM voor probleemoplossing. LVM of RAID kan indien gewenst worden gebruikt op gegevensschijven.
  • Configureer geen wisselpartitie of wisselbestand op de besturingssysteemschijf. De cloud-init-inrichtingsagent kan worden geconfigureerd voor het maken van een wisselbestand of een wisselpartitie op de tijdelijke resourceschijf. Meer informatie hierover vindt u in de onderstaande stappen.
  • Alle VHD's in Azure moeten een virtuele grootte hebben die is afgestemd op 1 MB. Wanneer u converteert van een onbewerkte schijf naar VHD, moet u ervoor zorgen dat de grootte van de onbewerkte schijf een veelvoud van 1 MB is voordat deze wordt geconverteerd. Zie De opmerkingen bij de installatie van Linux voor meer informatie.

Handmatige stappen

Notitie

Voordat u probeert uw eigen aangepaste Ubuntu-installatiekopie voor Azure te maken, kunt u overwegen de vooraf gebouwde en geteste installatiekopieën te gebruiken van waaruit u in plaats daarvan https://cloud-images.ubuntu.com/ beschikt.

  1. Selecteer in het middelste deelvenster van Hyper-V-beheer de virtuele machine.

  2. Klik op Verbinding maken om het venster voor de virtuele machine te openen.

  3. Vervang de huidige opslagplaatsen in de installatiekopie om de Azure-opslagplaats van Ubuntu te gebruiken.

    Voordat u bewerkt /etc/apt/sources.list, is het raadzaam om een back-up te maken:

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

    Ubuntu 18.04 en 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. De Ubuntu Azure-installatiekopieën gebruiken nu de op Azure afgestemde kernel. Werk het besturingssysteem bij naar de nieuwste op Azure afgestemde kernel en installeer Azure Linux-hulpprogramma's (inclusief Hyper-V-afhankelijkheden) door de volgende opdrachten uit te voeren:

    Ubuntu 18.04 en 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. Wijzig de kernel-opstartregel voor Grub om extra kernelparameters voor Azure op te nemen. Als u dit wilt /etc/default/grub doen in een teksteditor, zoekt u de variabele met de naam GRUB_CMDLINE_LINUX_DEFAULT (of voegt u deze indien nodig toe) en bewerkt u deze om de volgende parameters op te nemen:

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

    Sla dit bestand op en sluit het en voer het uit sudo update-grub. Hiermee zorgt u ervoor dat alle consoleberichten worden verzonden naar de eerste seriële poort, waarmee technische ondersteuning van Azure kan worden geboden bij foutopsporingsproblemen.

  6. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Dit is meestal de standaardwaarde.

  7. Installeer cloud-init (de inrichtingsagent) en de Azure Linux-agent (de handler voor gastextensies). Cloud-init gebruikt netplan voor het configureren van de systeemnetwerkconfiguratie (tijdens het inrichten en elke volgende opstartbewerking) en gdisk voor het partitioneren van resourceschijven.

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

    Notitie

    Het walinuxagent pakket kan de NetworkManager pakketten NetworkManager-gnome en pakketten verwijderen als ze zijn geïnstalleerd.

  8. Verwijder cloud-init-standaardconfiguraties en restartefacten netplan die mogelijk conflicteren met cloud-init-inrichting in 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. Configureer cloud-init om het systeem in te richten met behulp van de Azure-gegevensbron:

     # 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. Configureer de Azure Linux-agent om te vertrouwen op cloud-init om inrichting uit te voeren. Bekijk het WALinuxAgent-project voor meer informatie over deze opties.

    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. Cloud-init- en Azure Linux-agentruntimeartefacten en logboeken opschonen:

    # 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. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden voor inrichting in Azure:

    Notitie

    De sudo waagent -force -deprovision+user opdracht generaliseert de installatiekopieën door het systeem op te schonen en deze geschikt te maken voor het opnieuw inrichten. Met de +user optie verwijdert u het laatst ingerichte gebruikersaccount en de bijbehorende gegevens.

    Waarschuwing

    Het ongedaan maken van de inrichting met behulp van de bovenstaande opdracht garandeert niet dat de afbeelding wordt gewist van alle gevoelige informatie en geschikt is voor herdistributie.

    # sudo waagent -force -deprovision+user
    # rm -f ~/.bash_history
    # export HISTSIZE=0
    # logout
    
  13. Klik op Actie -> Afsluiten in Hyper-V-beheer.

  14. Azure accepteert alleen VHD's met een vaste grootte. Als de besturingssysteemschijf van de VIRTUELE machine geen VHD met vaste grootte is, gebruikt u de Convert-VHD PowerShell-cmdlet en geeft u de -VHDType Fixed optie op. Bekijk de documenten hier Convert-VHD : Convert-VHD.

  15. Voer de volgende stappen uit om een vm van de tweede generatie in Azure te gebruiken:

    1. Wijzig de directory in de opstartinstallatiekopie EFI-map:

      # cd /boot/efi/EFI
      
    2. Kopieer de ubuntu-map naar een nieuwe map met de naam boot:

      # sudo cp -r ubuntu/ boot
      
    3. Wijzig de directory in de zojuist gemaakte boot-map:

      # cd boot
      
    4. Naam van het bestand shimx64.efi:

      # sudo mv shimx64.efi bootx64.efi
      
    5. Wijzig de naam van het grub.cfg-bestand in bootx64.cfg:

      # sudo mv grub.cfg bootx64.cfg 
      

Volgende stappen

U bent nu klaar om uw virtuele Ubuntu Linux-harde schijf te gebruiken om nieuwe virtuele machines te maken in Azure. Als dit de eerste keer is dat u het VHD-bestand uploadt naar Azure, raadpleegt u Een Virtuele Linux-machine maken op basis van een aangepaste schijf.