Vorbereiten einer Debian-VHD für Azure
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
Voraussetzungen
In diesem Abschnitt wird davon ausgegangen, dass Sie bereits ein Debian Linux-Betriebssystem auf der Grundlage einer ISO-Datei von der Debian-Website auf einer virtuellen Festplatte (Virtual Hard Disk, VHD) installiert haben. Zum Erstellen von VHD-Dateien stehen mehrere verschiedene Tools bereit. Hyper-V ist nur ein Beispiel. Anweisungen zur Verwendung von Hyper-V finden Sie unter Installieren von Hyper-V und Erstellen eines virtuellen Computers.
Installationshinweise
- Weitere Tipps zur Vorbereitung von Linux für Azure finden Sie unter Allgemeine Installationshinweise für Linux.
- Das modernere VHDX-Format wird in Azure nicht unterstützt. Sie können den Datenträger mit dem Hyper-V-Manager oder dem
convert-vhd
-Cmdlet in das VHD-Format konvertieren. - Beim Installieren des Linux-Systems wird empfohlen, anstelle von LVM (Logical Volume Manager, logische Volumeverwaltung) – bei vielen Installationen oftmals voreingestellt – die Standardpartitionen zu verwenden. Durch die Verwendung von Partitionen wird vermieden, dass ein LVM-Namenskonflikt mit geklonten VMs auftritt, insbesondere dann, wenn ein Betriebssystemdatenträger zu Fehlerbehebungszwecken mit einer anderen VM verbunden wird. LVM oder RAID können ebenfalls auf Datenträgern verwendet werden.
- Konfigurieren Sie keine Auslagerungspartition auf dem Betriebssystemdatenträger. Der Azure-Linux-Agent kann konfiguriert werden, eine Auslagerungsdatei auf dem temporären Ressourcendatenträger zu erstellen. Weitere Informationen erhalten Sie in den folgenden Schritten.
- Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. Stellen Sie beim Konvertieren von einem RAW-Datenträger in VHD sicher, dass die Größe des RAW-Datenträgers vor der Konvertierung ein Vielfaches von 1 MB beträgt. Weitere Informationen finden Sie in den Linux-Installationshinweisen.
Vorbereiten eines Debian-Images für Azure
Sie können das Azure Debian-Cloudbasisimage mit dem FAI-Cloudimage-Generator (Fully Automatic Installation, vollautomatische Installation) erstellen. Informationen zum Vorbereiten eines Images ohne FAI finden Sie im Artikel zu generischen Schritten.
Die folgenden git clone- und apt-Installationsbefehle wurden aus dem Debian-Cloudimagerepository gepullt. Klonen Sie zunächst das Repository, und installieren Sie Abhängigkeiten:
$ 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
Optional: Passen Sie den Build an, indem Sie ./config_space/scripts/AZURE
Skripts (z. B. Shellskripts) hinzufügen.
Skriptbeispiel zum Anpassen des Images
$ 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
Stellen Sie allen Befehlen, die Sie zur Anpassung des Images verwenden möchten, $ROOTCMD
voran. Als Alias wird chroot $target
verwendet.
Erstellen des Azure Debian-Images
$ make image_[release]_azure_amd64
Mit diesem Befehl werden einige Dateien im aktuellen Verzeichnis ausgegeben, insbesondere die Imagedatei image_[release]_azure_amd64.raw
.
Konvertieren Sie das unformatierte Image für Azure in das VHD-Format:
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"
Bei diesem Vorgang wird die VHD image_[release]_azure_amd64.vhd
mit einer gerundeten Größe erstellt, sodass sie erfolgreich auf einen Azure-Datenträger kopiert werden kann.
Hinweis
Anstatt das Salsa-Repository zu klonen und Images lokal zu erstellen, können aktuelle stabile Images auf FAI erstellt und heruntergeladen werden.
Überprüfen Sie nach dem Erstellen eines stabilen Debian-VHD-Images und vor dem Hochladen, ob die folgenden Pakete installiert sind:
- apt-get install hyperv-daemons
- apt-get install waagent # (optional, aber empfohlen für Kennwortzurücksetzungen und die Verwendung von Erweiterungen)
- apt-get install cloud-init
Führen Sie dann ein vollständiges Upgrade durch:
- apt-get full-upgrade
Jetzt müssen die Azure-Ressourcen für dieses Image erstellt werden. In diesem Beispiel wird die Variable $rounded_size_adjusted
verwendet, daher sollte sie aus demselben Shellprozess aus dem vorherigen Schritt stammen.
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)
Wenn die Bandbreite von Ihrem lokalen Computer zum Azure-Datenträger zu einer langwierigen Verarbeitung des Uploads mit azcopy
führt, können Sie eine Azure-VM-Jumpbox verwenden, um den Prozess zu beschleunigen. Hier wird gezeigt, wie es geht:
- Erstellen Sie einen Tarball der VHD auf Ihrem lokalen Computer:
tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd
. - Erstellen Sie eine Azure Linux-VM (Distribution Ihrer Wahl). Stellen Sie sicher, dass Sie sie mit einem ausreichend großen Datenträger für die extrahierte VHD erstellen.
- Laden Sie das Hilfsprogramm
azcopy
auf die Azure Linux-VM herunter. Sie können es unter Erste Schritte mit AzCopy abrufen. - Kopieren Sie den Tarball auf die VM:
scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~
. - Extrahieren Sie VHD auf der VM:
tar -xf ./image_buster_azure_amd64.vhd.tar.gz
. Dieser Schritt dauert je nach Größe der Datei eine Weile. - Zum Schluss kopieren Sie die VHD auf der VM mit
azcopy
(oben stehender Befehl) auf den Azure-Datenträger.
Zugehöriger Inhalt
Sie können jetzt Ihre Debian Linux-VHD verwenden, um neue VMs in Azure zu erstellen. Wenn Sie zum ersten Mal die VHD-Datei in Azure hochladen, lesen Sie den Artikel Erstellen eines virtuellen Linux-Computers aus einem benutzerdefinierten Datenträger mithilfe der Azure CLI 2.0.