Preparar um VHD Debian para o Azure
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
Pré-requisitos
Esta seção assume que você já instalou um sistema operacional Debian Linux a partir de um arquivo .iso baixado do site Debian para um disco rígido virtual (VHD). Existem várias ferramentas para criar ficheiros .vhd. O Hyper-V é apenas um exemplo. Para obter instruções sobre como usar o Hyper-V, consulte Instalar a função Hyper-V e configurar uma máquina virtual (VM).
Notas de instalação
- Para obter mais dicas sobre como preparar o Linux para o Azure, consulte Notas gerais de instalação do Linux.
- O formato VHDX mais recente não é suportado no Azure. Você pode converter o disco para o formato VHD usando o Gerenciador do Hyper-V ou o
convert-vhd
cmdlet. - Quando você instala o sistema Linux, recomendamos que você use partições padrão em vez de Logical Volume Manager (LVM), que geralmente é o padrão para muitas instalações. O uso de partições evita conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser conectado a outra VM para solução de problemas. LVM ou RAID também podem ser usados em discos de dados.
- Não configure uma partição swap no disco do SO. O agente Linux do Azure pode ser configurado para criar um arquivo de permuta no disco de recurso temporário. Mais informações estão disponíveis nas etapas a seguir.
- Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco bruto para VHD, você deve garantir que o tamanho do disco bruto seja um múltiplo de 1 MB antes da conversão. Para obter mais informações, consulte Notas de instalação do Linux.
Preparar uma imagem Debian para o Azure
Você pode criar a imagem de nuvem Debian do Azure base com o construtor de imagens de nuvem de instalação totalmente automática (FAI). Para preparar uma imagem sem FAI, confira o artigo de etapas genéricas.
Os seguintes comandos git clone e apt installation foram extraídos do repositório Debian cloud images. Comece clonando o repositório e instalando dependências:
$ 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
Opcional: personalize a compilação adicionando scripts (por exemplo, shell scripts) ao ./config_space/scripts/AZURE
.
Exemplo de script para personalizar a imagem
$ 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
Prefira todos os comandos que você deseja ter personalizando a imagem com $ROOTCMD
. É conhecido como chroot $target
.
Construa a imagem Debian do Azure
$ make image_[release]_azure_amd64
Este comando produz um punhado de arquivos no diretório atual, mais notavelmente o image_[release]_azure_amd64.raw
arquivo de imagem.
Converta a imagem bruta em VHD para 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"
Esse processo cria um VHD image_[release]_azure_amd64.vhd
com um tamanho arredondado para que possa ser copiado com êxito para um disco do Azure.
Nota
Em vez de clonar o repositório de salsa e construir imagens localmente, as imagens estáveis atuais podem ser construídas e baixadas do FAI.
Depois de criar uma imagem VHD Debian estável e antes de fazer o upload, verifique se os seguintes pacotes estão instalados:
- apt-get instalar hyperv-daemons
- apt-get install waagent # (Opcional, mas recomendado para redefinições de senha e uso de extensões)
- apt-get instalar cloud-init
Em seguida, execute uma atualização completa:
- apt-get full-upgrade
Agora, os recursos do Azure devem ser criados para essa imagem. Este exemplo usa a $rounded_size_adjusted
variável, portanto, ela deve ser de dentro do mesmo processo de shell da etapa anterior.
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)
Se a largura de banda da sua máquina local para o disco do Azure estiver causando muito tempo para processar o carregamento com azcopy
o , você poderá usar uma caixa de jumpbox da VM do Azure para acelerar o processo. Veja como esse processo pode ser feito:
- Crie um tarball do VHD na sua máquina local:
tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd
. - Crie uma VM Linux do Azure (distribuição de sua escolha). Certifique-se de criá-lo com um disco grande o suficiente para armazenar o VHD extraído.
- Baixe o
azcopy
utilitário para a VM Linux do Azure. Você pode recuperá-lo em Introdução ao AzCopy. - Copie o tarball para a VM:
scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~
. - Na VM, extraia o VHD:
tar -xf ./image_buster_azure_amd64.vhd.tar.gz
. Esta etapa leva um pouco de tempo com base no tamanho do arquivo. - Finalmente, na VM, copie o VHD para o disco do Azure com
azcopy
(o comando anterior).
Conteúdos relacionados
Agora você está pronto para usar seu VHD Debian Linux para criar novas VMs no Azure. Se esta for a primeira vez que você carrega o arquivo .vhd no Azure, consulte Criar uma VM Linux a partir de um disco personalizado.