Een Debian VHD voorbereiden voor Azure

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

Vereisten

In deze sectie wordt ervan uitgegaan dat u al een Debian Linux-besturingssysteem hebt geïnstalleerd van een ISO-bestand dat van de Debian-website naar een virtuele harde schijf is gedownload. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken; Hyper-V is slechts één voorbeeld. Zie De Hyper-V-rol installeren en een virtuele machine configureren voor instructies over het gebruik van Hyper-V.

Notities bij de installatie

  • Zie ook Algemene linux-installatieopmerkingen voor meer tips over het voorbereiden van Linux voor Azure.
  • De nieuwere VHDX-indeling wordt niet ondersteund in Azure. U kunt de schijf converteren naar VHD-indeling met Hyper-V-beheer of de cmdlet convert-vhd .
  • Bij het installeren van het Linux-systeem wordt aanbevolen dat u standaardpartities gebruikt in plaats van LVM (vaak de standaardinstelling voor veel installaties). Hierdoor voorkomt u lvM-naamconflicten met gekloonde VM's, met name als een besturingssysteemschijf ooit moet worden gekoppeld aan een andere VM voor probleemoplossing. LVM of RAID kan indien gewenst worden gebruikt op gegevensschijven.
  • Configureer geen wisselpartitie op de besturingssysteemschijf. De Azure Linux-agent kan worden geconfigureerd voor het maken van een wisselbestand op de tijdelijke resourceschijf. Meer informatie 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 onbewerkte schijfgrootte een veelvoud van 1 MB is voordat deze wordt geconverteerd. Zie Linux-installatieopmerkingen voor meer informatie.

Azure-Manage gebruiken om Debian-VHD's te maken

Er zijn hulpprogramma's beschikbaar voor het genereren van Debian VHD's voor Azure, zoals de azure-manage-scripts van Credativ. Dit is de aanbevolen benadering versus het maken van een volledig nieuwe installatiekopieën. Als u bijvoorbeeld een Debian 8 VHD wilt maken, voert u de volgende opdrachten uit om het azure-manage hulpprogramma (en afhankelijkheden) te downloaden en het azure_build_image script uit te voeren:

# 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

Een Debian-installatiekopieën voorbereiden voor Azure

U kunt de basisinstallatiekopieën van Azure Debian Cloud maken met de FAI-cloudinstallatiekopieënbouwer.

(De volgende git-kloon- en apt-installatieopdrachten zijn opgehaald uit de Debian Cloud Images-opslagplaats) Begin met het klonen van de opslagplaats en het installeren van afhankelijkheden:

$ 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

(Optioneel) Pas de build aan door scripts (bijvoorbeeld shellscripts) toe te voegen aan ./config_space/scripts/AZURE.

Een voorbeeld van een script voor het aanpassen van de afbeelding is:

$ 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

Houd er rekening mee dat het belangrijk is om opdrachten te voorzien waarmee u de installatiekopieën $ROOTCMD wilt aanpassen, omdat dit een alias is.chroot $target

Bouw de Installatiekopieën van Azure Debian 10:

$ make image_buster_azure_amd64

Hiermee wordt een aantal bestanden in de huidige map uitgevoerd, met name het image_buster_azure_amd64.raw afbeeldingsbestand.

Als u de onbewerkte installatiekopieën wilt converteren naar VHD voor Azure, kunt u het volgende doen:

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"

Hiermee maakt u een VHD image_buster_azure_amd64.vhd met een afgeronde grootte om deze naar een Azure-schijf te kunnen kopiëren.

Nu moeten we de Azure-resources voor deze installatiekopieën maken (deze maakt gebruik van de $rounded_size_adjusted variabele, dus deze moet afkomstig zijn uit hetzelfde shellproces van bovenaf).

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)

Notitie

Als de bandbreedte van uw lokale computer naar de Azure-schijf ertoe leidt dat het uploaden met azcopy lang duurt, kunt u een Azure VM-jumpbox gebruiken om het proces te versnellen. U kunt dit als volgt doen:

  1. Maak een tarball van de VHD op uw lokale computer: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_buster_azure_amd64.vhd.
  2. Maak een Virtuele Linux-machine van Azure (distributie van uw keuze). Zorg ervoor dat u deze maakt met een grote schijf om de geëxtraheerde VHD op te houden.
  3. Download het azcopy-hulpprogramma naar de Virtuele Azure Linux-machine. Het kan hier worden opgehaald.
  4. Kopieer de tarball naar de VM: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. Pak op de VIRTUELE machine de VHD uit ( tar -xf ./image_buster_azure_amd64.vhd.tar.gz dit duurt even, gezien de grootte van het bestand).
  6. Kopieer ten slotte op de virtuele machine de VHD naar de Azure-schijf met azcopy (de opdracht hierboven).

Volgende stappen: U bent nu klaar om uw virtuele harde schijf van Debian Linux te gebruiken om nieuwe virtuele machines 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 op basis van een aangepaste schijf.