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 indien nodig aan te passen. De nieuwste versies van installatiekopieën zijn altijd te vinden op de volgende locaties:

Vereisten

In dit artikel wordt ervan uitgegaan dat u al een Ubuntu Linux-besturingssysteem op een virtuele harde schijf hebt geïnstalleerd. 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 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.
  • 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 aan een andere VIRTUELE machine moet worden gekoppeld 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 vóór de conversie een veelvoud van 1 MB is. Zie Installatieopmerkingen voor Linux voor meer informatie.

Handmatige stappen

Notitie

Voordat u uw eigen aangepaste Ubuntu-installatiekopie voor Azure maakt, kunt u overwegen om de vooraf gebouwde en geteste installatiekopieën te gebruiken.https://cloud-images.ubuntu.com/

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

  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 deze 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
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. 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) door de volgende opdrachten uit te voeren:
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. Wijzig de kernelstartregel voor Grub om extra kernelparameters voor Azure op te nemen. Als u dit /etc/default/grub wilt 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 vervolgens uit sudo update-grub. Dit zorgt ervoor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die ondersteuning kan bieden voor technische ondersteuning van Azure bij foutopsporingsproblemen.

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

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

  1. Verwijder cloud-init-standaardconfiguraties en restartefacten netplan die mogelijk conflicteren met cloud-init-inrichting 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
  1. Configureer 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
  1. Configureer de Azure Linux-agent om te vertrouwen op cloud-init om het inrichten uit te voeren. 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
  1. 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
  1. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

Notitie

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

Waarschuwing

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

sudo waagent -force -deprovision+user
sudo rm -f ~/.bash_history
  1. Klik op Actie -> Afsluiten in Hyper-V-beheer.

  2. 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 Convert-VHD hier: Convert-VHD.

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

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

cd /boot/efi/EFI
  1. Kopieer de ubuntu-map naar een nieuwe map met de naam Boot:
sudo cp -r ubuntu/ boot
  1. Wijzig de directory in de zojuist gemaakte boot-map:
cd boot
  1. Naam van het bestand shimx64.efi:
sudo mv shimx64.efi bootx64.efi
  1. Wijzig de naam van het bestand grub.cfg in bootx64.cfg:
sudo mv grub.cfg bootx64.cfg

Volgende stappen

U bent nu klaar om de virtuele harde schijf van Ubuntu Linux te gebruiken om nieuwe virtuele machines in Azure te maken. 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.