Prepare an Ubuntu virtual machine for Azure (Preparar uma máquina virtual Ubuntu para o Azure)
Aplica-se a: ✔️ Conjuntos de escala flexível Linux VMs ✔️
Ubuntu publica agora VHDs oficiais do Azure para download em https://cloud-images.ubuntu.com/. Se você precisa construir sua própria imagem Ubuntu especializada para Azure, em vez de usar o procedimento manual abaixo é recomendado para começar com estes VHDs de trabalho conhecidos e personalizar conforme necessário. As mais recentes versões de imagem podem sempre ser encontradas 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
Pré-requisitos
Este artigo pressupõe que já instalou um sistema operativo Ubuntu Linux num disco rígido virtual. Existem várias ferramentas para criar ficheiros .vhd, por exemplo, uma solução de virtualização como o Hyper-V. Para obter instruções, consulte instalar a função Hiper-V e configurar uma máquina virtual.
Notas de instalação Ubuntu
- Consulte também as notas de instalação do General Linux para obter mais dicas sobre a preparação do Linux para Azure.
- O formato VHDX não é suportado em Azure, apenas VHD fixo. Pode converter o disco em formato VHD utilizando o Hyper-V Manager ou o
Convert-VHD
cmdlet. - Ao instalar o sistema Linux recomenda-se que utilize divisórias padrão em vez de LVM (muitas vezes o padrão para muitas instalações). Isto evitará conflitos de nome LVM com VMs clonados, especialmente se um disco de SO precisar de ser ligado a outro VM para resolução de problemas. LVM ou RAID podem ser usados em discos de dados, se preferir.
- Não configuure uma partição de troca ou um ficheiro de troca no disco SO. O agente de provisão de init em nuvem pode ser configurado para criar um ficheiro de troca ou uma partição de troca no disco de recursos temporários. Mais informações sobre isso podem ser encontradas nos degraus abaixo.
- Todos os VHDs em Azure devem ter um tamanho virtual alinhado a 1MB. Ao converter de um disco cru para VHD, deve certificar-se de que o tamanho do disco bruto é um múltiplo de 1MB antes da conversão. Consulte as notas de instalação do Linux para obter mais informações.
Passos manuais
Nota
Antes de tentar criar a sua própria imagem personalizada de Ubuntu para Azure, considere usar as imagens pré-construídas e testadas a partir de https://cloud-images.ubuntu.com/ todo o mundo.
No painel central do Hyper-V Manager, selecione a máquina virtual.
Clique em Ligar para abrir a janela para a máquina virtual.
Substitua os repositórios atuais na imagem para utilizar o repositório Azure de Ubuntu.
Antes de editar
/etc/apt/sources.list
, é recomendado fazer uma cópia de segurança:# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
Ubuntu 18.04 e Ubuntu 20.04:
# 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 apt-get update
As imagens Ubuntu Azure estão agora a usar o núcleo à medida do Azure. Atualize o sistema operativo para o mais recente núcleo à medida do Azure e instale ferramentas Azure Linux (incluindo dependências de Hiper-V) executando os seguintes comandos:
Ubuntu 18.04 e Ubuntu 20.04:
# 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 (recommended) # sudo apt full-upgrade # sudo reboot
Modifique a linha de arranque do núcleo para grub para incluir parâmetros adicionais de kernel para Azure. Para o fazer aberto
/etc/default/grub
num editor de texto, encontre 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"
Guarde e feche este ficheiro e, em seguida, corra
sudo update-grub
. Isto irá garantir que todas as mensagens de consola são enviadas para a primeira porta em série, 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 começar na hora de arranque. Normalmente, este é o padrão.
Instale cloud-init (o agente de provisionamento) e o Agente Azure Linux (o manipulador de extensões de hóspedes). A Cloud-init utiliza-se
netplan
para configurar a configuração da rede do sistema (durante o provisionamento e cada arranque subsequente) egdisk
para os discos de recursos de partição.# sudo apt update # sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Nota
A
walinuxagent
embalagem pode remover asNetworkManager
embalagens eNetworkManager-gnome
as embalagens, se forem instaladas.Remova os artefactos padrão de nuvem e restos
netplan
que podem entrar em conflito com o fornecimento de inícono em Azure:# 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 # rm -f /etc/cloud/ds-identify.cfg # rm -f /etc/netplan/*.yaml
Configure a inição em nuvem para o fornecimento do sistema utilizando a fonte de dados Azure:
# cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg << EOF datasource_list: [ Azure ] EOF # cat > /etc/cloud/cloud.cfg.d/90-azure.cfg << EOF 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 > /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF reporting: logging: type: log telemetry: type: hyperv EOF
Configure o agente Azure Linux para confiar na nuvem para executar o fornecimento. Veja o projeto WALinuxAgent para obter mais informações sobre estas opções.
sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf cat >> /etc/waagent.conf << EOF # 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 e Azure Linux agente runtime artefactos e troncos:
# 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
Executar os seguintes comandos para desprovisionar a máquina virtual e prepará-la para o provisionamento em Azure:
Nota
O
sudo waagent -force -deprovision+user
comando generaliza a imagem tentando limpar o sistema e torná-la adequada para realojamento. A+user
opção elimina a última conta de utilizador a provisionada e os dados associados.Aviso
A desprovisionamento utilizando o comando acima não garante que a imagem seja limpa de todas as informações sensíveis e seja adequada para redistribuição.
# sudo waagent -force -deprovision+user # rm -f ~/.bash_history # export HISTSIZE=0 # logout
Clique em Ação -> Desligue em Hyper-V Manager.
O Azure só aceita VHDs de tamanho fixo. Se o disco de oss do VM não for um VHD de tamanho fixo, utilize o
Convert-VHD
cmdlet PowerShell e especifique a opção-VHDType Fixed
. Por favor, dê uma olhada nos docs paraConvert-VHD
aqui: Converte-VHD.Para trazer uma Geração 2 VM em Azure, siga estes passos:
Alterar o diretório para o diretório de EFI de arranque:
# cd /boot/efi/EFI
Copie o diretório ubuntu para um novo diretório nomeado boot:
# sudo cp -r ubuntu/ boot
Alterar o diretório para o recém-criado diretório de botas:
# cd boot
Mude o nome do ficheiro shimx64.efi:
# sudo mv shimx64.efi bootx64.efi
Mude o nome do ficheiro .cfg comida para bootx64.cfg:
# sudo mv grub.cfg bootx64.cfg
Passos seguintes
Está agora pronto para usar o seu disco rígido virtual Ubuntu Linux para criar novas máquinas virtuais em Azure. Se esta for a primeira vez que está a enviar o ficheiro .vhd para Azure, consulte Criar um Linux VM a partir de um disco personalizado.