Preparar uma máquina virtual do Ubuntu para o Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
O Ubuntu agora publica VHDs (discos rígidos virtuais) oficiais do Azure para download na página da Web Ubuntu Cloud Images. Se você precisar criar sua própria imagem especializada do Ubuntu para o Azure em vez de usar o procedimento manual a seguir, comece com esses VHDs de trabalho conhecidos e personalize-os, conforme necessário. Você sempre pode encontrar as versões mais recentes da imagem nos seguintes locais:
- Ubuntu 18.04/Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.zip
Pré-requisitos
Este artigo considera que você já instalou um SO (sistema operacional) Ubuntu Linux em um VHD. Existem várias ferramentas para criar arquivos .vhd. Um exemplo é uma solução de virtualização, como o Hyper-V. Para obter instruções, consulte Instalar a função Hyper-V e configurar uma VM (máquina virtual).
Notas de instalação do Ubuntu
- Para obter mais dicas sobre como preparar o Linux para o Azure, veja Notas gerais de instalação do Linux.
- Não há suporte para o formato VHDX no Azure, somente para o VHD fixo. Você pode converter o disco em formato VHD usando o Gerenciador do Hyper-V ou o cmdlet
Convert-VHD
. - Ao instalar o sistema Linux, recomendamos utilizar partições-padrão em vez do gerenciador de volume lógico (LVM), que geralmente é o padrão para muitas instalações. Estas partições-padrão evita conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser anexado 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 de troca ou arquivo de paginação no disco do SO. Você pode configurar o agente de provisionamento
cloud-init
para criar um arquivo de paginação ou uma partição de troca no disco de recurso temporário. Para obter mais informações sobre esse processo, consulte as etapas a seguir. - Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco não processado para VHD, certifique-se de que o tamanho do disco não processado seja um múltiplo de 1 MB antes da conversão. Para obter mais informações, consulte Notas de Instalação do Linux.
Etapas manuais
Observação
Antes de tentar criar sua própria imagem personalizada do Ubuntu para o Azure, considere usar as imagens predefinidas e testadas da página da Web Ubuntu Cloud Images.
No painel central do Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir a janela da VM.
Substitua os repositórios atuais na imagem para usar o repositório do Azure no Ubuntu.
Antes de editar
/etc/apt/sources.list
, recomendamos que você faça um backup:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt-get update
As imagens do Azure no Ubuntu agora estão usando o kernel personalizado do Azure. Atualize o SO para o kernel personalizado mais recente do Azure e instale as ferramentas do Linux do Azure (incluindo dependências do Hyper-V):
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo reboot
Modifique a linha de inicialização para o GRUB para incluir parâmetros adicionais de kernel para o Azure. Para realizar essa etapa, abra
/etc/default/grub
em um editor de texto, localize a variável chamadaGRUB_CMDLINE_LINUX_DEFAULT
(ou adicione-a, se necessário) e edite-a para incluir os seguintes parâmetros:GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
Salve e feche esse arquivo e execute
sudo update-grub
. Essa etapa também garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode auxiliar o suporte do Azure com problemas de depuração.Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Essa configuração geralmente é o padrão.
Instale o
cloud-init
(o agente de provisionamento) e o agente Linux do Azure (o manipulador de extensões de convidado). OCloud-init
usa onetplan
para definir a configuração de rede do sistema (durante o provisionamento e a cada nova inicialização) egdisk
para particionar discos de recursos.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Observação
O pacote
walinuxagent
pode remover os pacotesNetworkManager
eNetworkManager-gnome
, se estiverem instalados.Remova as configurações padrão do
cloud-init
e os artefatos restantes donetplan
que podem entrar em conflito com o provisionamento docloud-init
no Azure:sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yaml
Configure
cloud-init
para provisionar o sistema usando a fonte de dados do Azure:cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg datasource_list: [ Azure ] EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg reporting: logging: type: log telemetry: type: hyperv EOF
Configure o agente Linux do Azure para usar o
cloud-init
para executar o provisionamento. Para obter mais informações sobre essas opções, confira o projeto WALinuxAgent.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
cat <<EOF | sudo tee -a /etc/waagent.conf # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOF
Limpe os logs e artefatos de runtime do Agente do Linux do Azure e do
cloud-init
:sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log
Desprovisione a VM e prepare-a para provisionamento no Azure.
Observação
O comando
sudo waagent -force -deprovision+user
generaliza a imagem tentando limpar o sistema e torná-la adequada para o novo provisionamento. A opção+user
exclui a última conta de usuário provisionada e dados associados.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Aviso
O desprovisionamento usando o comando acima não garante que a imagem estará livre de todas as informações confidenciais e será adequada para redistribuição.
Selecione Ação>Desligar no Gerenciador do Hyper-V.
O Azure aceita somente VHDs de tamanho fixo. Se o disco do sistema operacional da VM não for um VHD de tamanho fixo, use o cmdlet do PowerShell
Convert-VHD
e especifique a opção-VHDType Fixed
. Para obter mais informações, examine os documentos doConvert-VHD
em Convert-VHD.Para trazer uma VM da geração 2 no Azure, siga estas etapas:
Altere para o diretório
boot EFI
:cd /boot/efi/EFI
Copie o diretório
ubuntu
para um novo diretório chamadoboot
:sudo cp -r ubuntu/ boot
Mude para o diretório de boot recém-criado:
cd boot
Renomeie o arquivo
shimx64.efi
:sudo mv shimx64.efi bootx64.efi
Renomeie o arquivo
grub.cfg
comobootx64.cfg
:sudo mv grub.cfg bootx64.cfg
Conteúdo relacionado
Agora está tudo pronto para usar o VHD do Ubuntu Linux para criar VMs no Azure. Se esta é a primeira vez que você está carregando o arquivo .vhd para o Azure, consulte Criar uma VM do Linux a partir de um disco personalizado.