Delen via


Een virtuele Ubuntu-machine voor Azure voorbereiden

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

Ubuntu publiceert nu officiële virtuele Azure-harde schijven (VHD's) voor download op de webpagina Ubuntu Cloud Images. Als u uw eigen gespecialiseerde Ubuntu-installatiekopie voor Azure moet bouwen in plaats van de volgende handmatige procedure te gebruiken, begint u met deze bekende werkende VHD's en past u deze indien nodig aan. U kunt altijd de nieuwste versies van installatiekopieën vinden op de volgende locaties:

Vereisten

In dit artikel wordt ervan uitgegaan dat u al een Ubuntu Linux-besturingssysteem (OS) hebt geïnstalleerd op een VHD. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken. Een voorbeeld hiervan is een virtualisatieoplossing zoals Hyper-V. Zie De Hyper-V-rol installeren en een virtuele machine (VM) configureren voor instructies.

Ubuntu-installatieopmerkingen

  • Zie algemene linux-installatieopmerkingen 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.
  • Wanneer u het Linux-systeem installeert, wordt u aangeraden standaardpartities te gebruiken in plaats van LVM (Logical Volume Manager). Dit is vaak de standaardinstelling voor veel installaties. Deze standaardpartities voorkomen conflicten met de LVM-naam met gekloonde VM's, met name als een besturingssysteemschijf ooit aan een andere VM moet worden gekoppeld voor probleemoplossing. LVM of RAID kan ook worden gebruikt op gegevensschijven.
  • Configureer geen wisselpartitie of wisselbestand op de besturingssysteemschijf. U kunt de cloud-init inrichtingsagent configureren voor het maken van een wisselbestand of een wisselpartitie op de tijdelijke resourceschijf. Zie de volgende stappen voor meer informatie over dit proces.
  • 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 vóór de conversie een veelvoud van 1 MB is. Zie de installatieopmerkingen voor Linux voor meer informatie.

Handmatige stappen

Notitie

Voordat u probeert uw eigen aangepaste Ubuntu-installatiekopie voor Azure te maken, kunt u in plaats daarvan de vooraf gemaakte en geteste installatiekopieën van de webpagina Ubuntu Cloud Images gebruiken.

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

  2. Selecteer 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 deze bewerkt /etc/apt/sources.list, raden we u aan een back-up te maken:

    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. De Ubuntu Azure-installatiekopieën maken nu gebruik van 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):

    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. Wijzig de kernelstartlijn voor GRUB om extra kernelparameters voor Azure op te nemen. Als u deze stap wilt uitvoeren, opent /etc/default/grub u deze 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"
    
  6. Sla dit bestand op en sluit het en voer het vervolgens uit sudo update-grub. Deze stap zorgt ervoor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die ondersteuning biedt voor technische ondersteuning van Azure bij foutopsporingsproblemen.

  7. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Deze instelling is meestal de standaardinstelling.

  8. 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 en NetworkManager-gnome pakketten verwijderen als ze zijn geïnstalleerd.

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

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

    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. Runtime-artefacten en logboeken voor Azure Linux-agent opschonen cloud-init en logboeken:

    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. Maak de inrichting van de VIRTUELE machine ongedaan en bereid deze voor op inrichting in Azure.

    Notitie

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

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

    Waarschuwing

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

  14. Selecteer Actie>afsluiten in Hyper-V-beheer.

  15. 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. Raadpleeg de documenten voor Convert-VHD Converteren-VHD voor meer informatie.

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

    1. Wijzig de map in de boot EFI map:

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

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

      cd boot
      
    4. Wijzig de naam van het shimx64.efi bestand:

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

      sudo mv grub.cfg bootx64.cfg
      

U bent nu klaar om uw Ubuntu Linux-VHD te gebruiken om nieuwe VM's 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 vanaf een aangepaste schijf.