Prepare an Ubuntu virtual machine for Azure (Preparar uma máquina virtual Ubuntu para o Azure)
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
O Ubuntu agora publica discos rígidos virtuais (VHDs) oficiais do Azure para download na página do 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 de imagem mais recentes 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 pressupõe que você já instalou um sistema operacional Ubuntu Linux (OS) para um VHD. Existem várias ferramentas para criar ficheiros .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 máquina virtual (VM).
Notas de instalação do Ubuntu
- Para obter mais dicas sobre como preparar o Linux para o Azure, consulte Notas gerais de instalação do Linux.
- O formato VHDX não é suportado no Azure, apenas VHD fixo. 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. Essas partições padrão evitam 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 ou um ficheiro de permuta no disco do SO. Você pode configurar o
cloud-init
agente de provisionamento para criar um arquivo de permuta ou uma partição de permuta 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 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.
Passos manuais
Nota
Antes de tentar criar sua própria imagem personalizada do Ubuntu para o Azure, considere usar as imagens pré-criadas 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 do Ubuntu.
Antes de editar
/etc/apt/sources.list
, recomendamos que faça uma cópia de segurança: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 Ubuntu Azure agora estão usando o kernel personalizado do Azure. Atualize o SO para o kernel mais recente adaptado ao Azure e instale as ferramentas 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 do kernel para o GRUB para incluir parâmetros extras do kernel para o Azure. Para fazer 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 este arquivo e execute
sudo update-grub
. Esta etapa garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte técnico do Azure com problemas de depuração.Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização. Essa configuração geralmente é o padrão.
Instale
cloud-init
(o agente de provisionamento) e o agente Linux do Azure (o manipulador de extensões convidadas).Cloud-init
Usanetplan
para configurar a configuração de rede do sistema (durante o provisionamento e cada inicialização subsequente) egdisk
para particionar discos de recursos.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Nota
O
walinuxagent
pacote pode remover osNetworkManager
pacotes eNetworkManager-gnome
se eles estiverem instalados.Remova
cloud-init
as configurações padrão e os artefatos remanescentesnetplan
que podem entrar em conflito comcloud-init
o provisionamento 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 no
cloud-init
qual confiar para executar o provisionamento. Para obter mais informações sobre essas opções, consulte 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
Limpar
cloud-init
artefatos e logs de tempo de execução do agente Linux do Azure: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.
Nota
O
sudo waagent -force -deprovision+user
comando generaliza a imagem tentando limpar o sistema e torná-lo adequado para reprovisionamento. A+user
opção exclui a última conta de usuário provisionada e os dados associados.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Aviso
O desprovisionamento usando o comando anterior não garante que a imagem seja limpa de todas as informações confidenciais e seja adequada para redistribuição.
Selecione Ação>Desligar no Gerenciador do Hyper-V.
O Azure só aceita VHDs de tamanho fixo. Se o disco do sistema operacional da VM não for um VHD de tamanho fixo, use o
Convert-VHD
cmdlet do PowerShell e especifique a-VHDType Fixed
opção. Para obter mais informações, consulte os documentos emConvert-VHD
Convert-VHD.Para trazer uma VM de Geração 2 no Azure, siga estas etapas:
Altere o diretório para o
boot EFI
diretório:cd /boot/efi/EFI
Copie o
ubuntu
diretório para um novo diretório chamadoboot
:sudo cp -r ubuntu/ boot
Altere o diretório para o diretório de inicialização recém-criado:
cd boot
Renomeie o
shimx64.efi
arquivo:sudo mv shimx64.efi bootx64.efi
Renomeie o
grub.cfg
arquivo parabootx64.cfg
:sudo mv grub.cfg bootx64.cfg
Conteúdos relacionados
Agora você está pronto para usar seu VHD do Ubuntu 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.