Dela via


Förbered en Debian VHD för Azure

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

Förutsättningar

Det här avsnittet förutsätter att du redan har installerat ett Debian Linux-operativsystem från en .iso fil som laddats ned från Debians webbplats till en virtuell hårddisk (VHD). Det finns flera verktyg för att skapa VHD-filer. Hyper-V är bara ett exempel. Anvisningar om hur du använder Hyper-V finns i Installera Hyper-V-rollen och konfigurera en virtuell dator (VM).

Installationsanteckningar

  • Fler tips om hur du förbereder Linux för Azure finns i Allmänna linux-installationsanteckningar.
  • Det nyare VHDX-formatet stöds inte i Azure. 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 Logical Volume Manager (LVM), vilket ofta är standard för många installationer. Med partitioner undviks LVM-namnkonflikter 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 också användas på datadiskar.
  • Konfigurera inte en växlingspartition på OS-disken. Azure Linux-agenten kan konfigureras för att skapa en växlingsfil på den tillfälliga resursdisken. Mer information finns i följande steg.
  • 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 på 1 MB före konverteringen. Mer information finns i Installationsanteckningar för Linux.

Förbereda en Debian-avbildning för Azure

Du kan skapa basmolnavbildningen för Azure Debian med molnavbildningsverktyget för helautomatisk installation (FAI). Om du vill förbereda en bild utan FAI kan du läsa artikeln om allmänna steg.

Följande git-klon och apt-installationskommandon hämtades från lagringsplatsen debianmolnbilder. Börja med att klona lagringsplatsen och installera beroenden:

$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
    fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
    python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images

Valfritt: Anpassa bygget genom att lägga till skript (till exempel shell-skript) till ./config_space/scripts/AZURE.

Skriptexempel för att anpassa avbildningen

$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash

\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom

Prefix för alla kommandon som du vill anpassa avbildningen med $ROOTCMD. Det är alias som chroot $target.

Skapa Azure Debian-avbildningen

$ make image_[release]_azure_amd64

Det här kommandot matar ut en handfull filer i den aktuella katalogen, framför allt image_[release]_azure_amd64.raw bildfilen.

Konvertera raw-avbildningen till VHD för Azure:

rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_azure_amd64.vhd"

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')

rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))

echo "Rounded Size Adjusted = $rounded_size_adjusted"

sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"

Den här processen skapar en virtuell hårddisk image_[release]_azure_amd64.vhd med avrundad storlek så att den kan kopieras till en Azure-disk.

Kommentar

I stället för att klona salsalagringsplatsen och skapa bilder lokalt kan aktuella stabila bilder skapas och laddas ned från FAI.

När du har skapat en stabil Debian VHD-avbildning och innan du laddar upp kontrollerar du att följande paket är installerade:

  • apt-get installera hyperv-daemons
  • apt-get install waagent # (Valfritt men rekommenderas för lösenordsåterställning och användning av tillägg)
  • apt-get install cloud-init

Utför sedan en fullständig uppgradering:

  • apt-get full-upgrade

Nu måste Azure-resurserna skapas för den här avbildningen. I det här exemplet används variabeln $rounded_size_adjusted , så den bör vara från samma gränssnittsprocess från föregående steg.

az group create -l $LOCATION -n $RG

az disk create \
    -n $DISK \
    -g $RG \
    -l $LOCATION \
    --for-upload --upload-size-bytes "$rounded_size_adjusted" \
    --sku standard_lrs --hyper-v-generation V1

ACCESS=$(az disk grant-access \
    -n $DISK -g $RG \
    --access-level write \
    --duration-in-seconds 86400 \
    --query accessSas -o tsv)

azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob

az disk revoke-access -n $DISK -g $RG
az image create \
    -g $RG \
    -n $IMAGE \
    --os-type linux \
    --source $(az disk show \
        -g $RG \
        -n $DISK \
        --query id -o tsv)
az vm create \
    -g $RG \
    -n $VM \
    --ssh-key-value $SSH_KEY_VALUE \
    --public-ip-address-dns-name $VM \
    --image $(az image show \
        -g $RG \
        -n $IMAGE \
        --query id -o tsv)

Om bandbredden från den lokala datorn till Azure-disken orsakar en lång tid att bearbeta uppladdningen med azcopykan du använda en azure VM-jumpbox för att påskynda processen. Så här kan den här processen göras:

  1. Skapa en tarball av den virtuella hårddisken på den lokala datorn: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd.
  2. Skapa en virtuell Azure Linux-dator (valfri distribution). Se till att du skapar den med en tillräckligt stor disk för att lagra den extraherade virtuella hårddisken.
  3. azcopy Ladda ned verktyget till den virtuella Azure Linux-datorn. Du kan hämta den från Kom igång med AzCopy.
  4. Kopiera tarball till den virtuella datorn: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. På den virtuella datorn extraherar du den virtuella hårddisken: tar -xf ./image_buster_azure_amd64.vhd.tar.gz. Det här steget tar lite tid baserat på filens storlek.
  6. På den virtuella datorn kopierar du slutligen den virtuella hårddisken till Azure-disken med azcopy (föregående kommando).

Nu är du redo att använda din virtuella Debian 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.