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

Installationsanteckningar

  • Mer information 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 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 på OS-disken. Azure Linux-agenten kan konfigureras för att skapa en växlingsfil på den tillfälliga resursdisken. Mer information 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.

Använda Azure-Manage för att skapa virtuella Debian-hårddiskar

Det finns verktyg för att generera virtuella Debian-hårddiskar för Azure, till exempel azure-manage-skript från Instaclustr. Det här är den rekommenderade metoden jämfört med att skapa en bild från grunden. Om du till exempel vill skapa en VHD för Debian 8 kör du följande kommandon för att ladda ned azure-manage verktyget (och beroenden) och köra skriptet azure_build_image :

# sudo apt-get update
# sudo apt-get install git qemu-utils mbr kpartx debootstrap

# sudo apt-get install python3-pip python3-dateutil python3-cryptography
# sudo pip3 install azure-storage azure-servicemanagement-legacy azure-common pytest pyyaml
# git clone https://github.com/credativ/azure-manage.git
# cd azure-manage
# sudo pip3 install .

# sudo azure_build_image --option release=jessie --option image_size_gb=30 --option image_prefix=debian-jessie-azure section

Förbereda en Debian-avbildning för Azure

Du kan skapa den grundläggande Azure Debian Cloud-avbildningen med FAI-molnavbildningsverktyget.

(Följande git-klon och apt-installationskommandon hämtades från Debian Cloud Images-lagringsplatsen) 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 versionen genom att lägga till skript (t.ex. shell-skript) i ./config_space/scripts/AZURE.

Ett exempel på ett skript för att anpassa avbildningen är:

$ 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

Observera att det är viktigt att prefixa alla kommandon som du vill anpassa avbildningen med $ROOTCMD eftersom detta är alias som chroot $target.

Skapa Azure Debian 10-avbildningen:

$ make image_buster_azure_amd64

Då matas en handfull filer ut i den aktuella katalogen, framför allt image_buster_azure_amd64.raw bildfilen.

Om du vill konvertera den råa avbildningen till en virtuell hårddisk för Azure kan du göra följande:

rawdisk="image_buster_azure_amd64.raw"
vhddisk="image_buster_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"

Detta skapar en virtuell hårddisk image_buster_azure_amd64.vhd med avrundad storlek för att kunna kopiera den till en Azure Disk.

Nu måste vi skapa Azure-resurserna för den här avbildningen (detta använder variabeln $rounded_size_adjusted , så den bör vara inifrån samma gränssnittsprocess ovan).

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)

Kommentar

Om bandbredden från din lokala dator till Azure Disk orsakar en lång tid för att bearbeta uppladdningen med azcopy kan du använda en azure VM-jumpbox för att påskynda processen. Så här kan du göra följande:

  1. Skapa en tarball av den virtuella hårddisken på den lokala datorn: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_buster_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. Ladda ned azcopy-verktyget till den virtuella Azure Linux-datorn. Den kan hämtas härifrån.
  4. Kopiera tarball till den virtuella datorn: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. Extrahera den virtuella hårddisken på den virtuella datorn: tar -xf ./image_buster_azure_amd64.vhd.tar.gz (det tar lite tid med tanke på filens storlek).
  6. Slutligen på den virtuella datorn kopierar du den virtuella hårddisken till Azure Disk med azcopy (kommandot ovan).

Nästa steg: 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.