Förbereda en virtuell Ubuntu-dator för Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Ubuntu publicerar nu officiella virtuella Azure-hårddiskar för nedladdning på https://cloud-images.ubuntu.com/. Om du behöver skapa en egen specialiserad Ubuntu-avbildning för Azure, i stället för att använda den manuella proceduren nedan rekommenderar vi att du börjar med dessa kända fungerande virtuella hårddiskar och anpassar efter behov. De senaste avbildningsversionerna finns alltid på följande platser:

Förutsättningar

Den här artikeln förutsätter att du redan har installerat ett Ubuntu Linux-operativsystem på en virtuell hårddisk. Det finns flera verktyg för att skapa VHD-filer, till exempel en virtualiseringslösning som Hyper-V. Anvisningar finns i Installera Hyper-V-rollen och Konfigurera en virtuell dator.

Installationsanmärkningar för Ubuntu

  • Mer information om hur du förbereder Linux för Azure finns i Allmänna Linux-installationsanteckningar .
  • VHDX-formatet stöds inte i Azure, endast fast virtuell hårddisk. Du kan konvertera disken till VHD-format med Hjälp av Hyper-V Manager eller cmdleten Convert-VHD .
  • När du installerar Linux-systemet rekommenderar vi att du använder standardpartitioner i stället för LVM (ofta standard för många installationer). Detta förhindrar att LVM-namn står i konflikt med klonade virtuella datorer, särskilt om en OS-disk någonsin behöver anslutas till en annan virtuell dator för felsökning. LVM eller RAID kan användas på datadiskar om så önskas.
  • Konfigurera inte en växlingspartition eller växlingsfil på OS-disken. Cloud-init-etableringsagenten kan konfigureras för att skapa en växlingsfil eller en växlingspartition på den tillfälliga resursdisken. Mer information om detta finns i stegen nedan.
  • Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB. När du konverterar från en rådisk till en virtuell hårddisk måste du se till att den råa diskstorleken är en multipel av 1 MB före konverteringen. Mer information finns i Installationsanteckningar för Linux.

Manuella steg

Kommentar

Innan du försöker skapa en egen anpassad Ubuntu-avbildning för Azure bör du överväga att använda de förbyggda och testade avbildningarna från https://cloud-images.ubuntu.com/ i stället.

  1. I den centrala rutan i Hyper-V Manager väljer du den virtuella datorn.

  2. Klicka på Anslut för att öppna fönstret för den virtuella datorn.

  3. Ersätt de aktuella lagringsplatserna i avbildningen för att använda Ubuntus Azure-lagringsplats.

    Innan du redigerar /etc/apt/sources.listrekommenderar vi att du gör en säkerhetskopia:

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. Ubuntu Azure-avbildningarna använder nu den Azure-skräddarsydda kerneln. Uppdatera operativsystemet till den senaste Azure-skräddarsydda kerneln och installera Azure Linux-verktyg (inklusive Hyper-V-beroenden) genom att köra följande kommandon:
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. Ändra kernel-startlinjen för Grub så att den innehåller ytterligare kernelparametrar för Azure. Om du vill göra detta öppet /etc/default/grub i en textredigerare letar du upp variabeln med namnet GRUB_CMDLINE_LINUX_DEFAULT (eller lägger till den om det behövs) och redigerar den så att den innehåller följande parametrar:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"

Spara och stäng den här filen och kör sudo update-grubsedan . Detta säkerställer att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azures tekniska support med felsökningsproblem.

  1. Kontrollera att SSH-servern är installerad och konfigurerad att starta vid start. Detta är vanligtvis standardvärdet.

  2. Installera cloud-init (etableringsagenten) och Azure Linux-agenten (gästtilläggshanteraren). Cloud-init använder netplan för att konfigurera systemnätverkskonfigurationen (under etableringen och varje efterföljande start) och gdisk för att partitionera resursdiskar.

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

Kommentar

Paketet walinuxagent kan ta bort paketen NetworkManager och NetworkManager-gnome om de är installerade.

  1. Ta bort standardkonfigurationer och överblivna netplan artefakter i cloud-init som kan vara i konflikt med etablering av cloud-init i 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. Konfigurera cloud-init för att etablera systemet med hjälp av Azure-datakällan:
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. Konfigurera Azure Linux-agenten så att den förlitar sig på cloud-init för att utföra etablering. Ta en titt på WALinuxAgent-projektet för mer information om dessa alternativ.
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. Rensa cloud-init och Azure Linux-agentens körningsartefakter och loggar:
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. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure:

Kommentar

Kommandot sudo waagent -force -deprovision+user generaliserar avbildningen genom att försöka rensa systemet och göra det lämpligt för ometablering. Alternativet +user tar bort det senast etablerade användarkontot och associerade data.

Varning

Avetablering med kommandot ovan garanterar inte att avbildningen rensas från all känslig information och är lämplig för omdistribution.

sudo waagent -force -deprovision+user
sudo rm -f ~/.bash_history
  1. Klicka på Åtgärd –> Stäng av i Hyper-V Manager.

  2. Azure accepterar endast virtuella hårddiskar med fast storlek. Om den virtuella datorns OS-disk inte är en virtuell hårddisk med fast storlek använder du PowerShell-cmdleten Convert-VHD och anger alternativet -VHDType Fixed . Ta en titt på dokumenten för Convert-VHD här: Convert-VHD.

  3. Följ dessa steg för att ta med en virtuell dator av generation 2 i Azure:

  4. Ändra katalog till EFI-startkatalogen:

cd /boot/efi/EFI
  1. Kopiera ubuntu-katalogen till en ny katalog med namnet boot:
sudo cp -r ubuntu/ boot
  1. Ändra katalog till den nyligen skapade startkatalogen:
cd boot
  1. Byt namn på filen shimx64.efi:
sudo mv shimx64.efi bootx64.efi
  1. Byt namn på filen grub.cfg till bootx64.cfg:
sudo mv grub.cfg bootx64.cfg

Nästa steg

Nu är du redo att använda din virtuella Ubuntu Linux-hårddisk för att skapa nya virtuella datorer i Azure. Om det är första gången du laddar upp VHD-filen till Azure läser du Skapa en virtuell Linux-dator från en anpassad disk.