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:

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.

  1. No painel central do Gerenciador do Hyper-V, selecione a VM.

  2. Selecione Conectar para abrir a janela da VM.

  3. 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
    
  4. 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
    
  5. 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 chamada GRUB_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"
    
  6. 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.

  7. 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.

  8. Instale cloud-init (o agente de provisionamento) e o agente Linux do Azure (o manipulador de extensões convidadas). Cloud-init Usa netplan para configurar a configuração de rede do sistema (durante o provisionamento e cada inicialização subsequente) e gdisk 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 os NetworkManager pacotes e NetworkManager-gnome se eles estiverem instalados.

  9. Remova cloud-init as configurações padrão e os artefatos remanescentes netplan que podem entrar em conflito com cloud-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
    
  10. 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
    
  11. 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
    
  12. 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
    
  13. 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.

  14. Selecione Ação>Desligar no Gerenciador do Hyper-V.

  15. 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 em Convert-VHD Convert-VHD.

  16. Para trazer uma VM de Geração 2 no Azure, siga estas etapas:

    1. Altere o diretório para o boot EFI diretório:

      cd /boot/efi/EFI
      
    2. Copie o ubuntu diretório para um novo diretório chamado boot:

      sudo cp -r ubuntu/ boot
      
    3. Altere o diretório para o diretório de inicialização recém-criado:

      cd boot
      
    4. Renomeie o shimx64.efi arquivo:

      sudo mv shimx64.efi bootx64.efi
      
    5. Renomeie o grub.cfg arquivo para bootx64.cfg:

      sudo mv grub.cfg bootx64.cfg
      

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.