Partilhar via


Preparar uma máquina virtual do Oracle Linux para o Azure

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo pressupõe que você já tenha instalado um sistema operacional (SO) Oracle Linux em um disco rígido virtual (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 Oracle Linux

  • Para obter mais dicas sobre como preparar o Linux para o Azure, consulte Notas gerais de instalação do Linux.
  • O Hyper-V e o Azure oferecem suporte ao Oracle Linux com o UEK (Unbreakable Enterprise Kernel) ou o Red Hat Compatible Kernel.
  • O UEK2 da Oracle não é suportado no Hyper-V e no Azure porque não inclui os controladores necessários.
  • 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.
  • É necessário suporte kernel para a montagem de sistemas de ficheiros UDF (User-defined functions). Na primeira inicialização no Azure, a configuração de provisionamento é passada para a VM Linux por meio de mídia formatada em UDF anexada ao convidado. O agente Linux do Azure deve ser capaz de montar o sistema de arquivos UDF para ler sua configuração e provisionar a VM.
  • 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.
  • As versões do kernel Linux anteriores à 2.6.37 não suportam NUMA no Hyper-V com tamanhos de VM maiores. Esse problema afeta principalmente distribuições mais antigas que usam o kernel upstream do Red Hat 2.6.32 e foi corrigido no Oracle Linux 6.6 e posterior.
  • Não configure uma partição swap no disco do SO.
  • 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.
  • Certifique-se de que o Addons repositório está ativado. Edite o arquivo /etc/yum.repos.d/public-yum-ol6.repo(Oracle Linux 6) ou /etc/yum.repos.d/public-yum-ol7.repo(Oracle Linux 7). Altere a linha enabled=0 para enabled=1 em [ol6_addons] ou [ol7_addons] neste ficheiro.

Oracle Linux 6.X [en]

Importante

Lembre-se que o Oracle Linux 6.x já está em fim de vida. O Oracle Linux versão 6.10 tem disponível o Extended Lifecycle Support, que termina em julho de 2024.

Você deve concluir etapas de configuração específicas no sistema operacional para que a VM seja executada no Azure.

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

  2. Selecione Conectar para abrir a janela da VM.

  3. Desinstalação NetworkManager:

    sudo rpm -e --nodeps NetworkManager
    

    Nota

    Se o pacote ainda não estiver instalado, este comando falhará com uma mensagem de erro. Esta mensagem é esperada.

  4. Crie um arquivo chamado network no /etc/sysconfig/ diretório que contém o seguinte texto:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Crie um arquivo chamado ifcfg-eth0 no /etc/sysconfig/network-scripts/ diretório que contém o seguinte texto:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Modifique as regras do udev para evitar a geração de regras estáticas para as interfaces Ethernet. Essas regras podem causar problemas quando você clona uma VM no Azure ou no Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Certifique-se de que o serviço de rede inicia no momento da inicialização:

    sudo chkconfig network on
    
  8. Instalar python-pyasn1:

    sudo yum install python-pyasn1
    
  9. Modifique a linha de inicialização do kernel em sua configuração grub para incluir mais parâmetros do kernel para o Azure. Para fazer esta etapa, abra /boot/grub/menu.lst em um editor de texto e certifique-se de que o kernel inclui os seguintes parâmetros:

    console=ttyS0 earlyprintk=ttyS0
    

    Essa configuração garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração.

    Além das etapas anteriores, recomendamos que você remova os seguintes parâmetros:

    rhgb quiet crashkernel=auto
    

    A inicialização gráfica e silenciosa não é útil em um ambiente de nuvem onde você deseja que todos os logs sejam enviados para a porta serial.

    A crashkernel opção pode ser deixada configurada, se desejar. Esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser um problema para tamanhos menores de VM.

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

  11. Instale o agente Linux do Azure executando o seguinte comando. A última versão é 2.0.15.

    sudo yum install WALinuxAgent
    

    A instalação do WALinuxAgent pacote remove os NetworkManager pacotes e NetworkManager-gnome se eles ainda não tiverem sido removidos, conforme descrito na etapa 2.

  12. Não crie espaço de permuta no disco do SO.

    O agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM após o provisionamento no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado quando a VM é desprovisionada. Depois de instalar o agente Linux do Azure (consulte a etapa anterior), modifique os seguintes parâmetros adequadamente /etc/waagent.conf :

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  13. Desprovisione a VM e prepare-a para provisionamento no Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Selecione Ação>Desligar no Gerenciador do Hyper-V. Seu VHD do Linux agora está pronto para ser carregado no Azure.


Oracle Linux 7.0 e posterior

Siga as etapas nas próximas seções se estiver usando o Oracle Linux 7.0 ou posterior.

Alterações no Oracle Linux 7

A preparação de uma VM do Oracle Linux 7 para o Azure é semelhante ao Oracle Linux 6, mas vale a pena notar várias diferenças:

  • O Azure suporta Oracle Linux com o Unbreakable Enterprise Kernel (UEK) ou o Red Hat Compatible Kernel. Recomendamos que você use o Oracle Linux com o UEK.
  • O NetworkManager pacote não entra mais em conflito com o agente Linux do Azure. Este pacote é instalado por padrão e recomendamos que você não o remova.
  • GRUB2 agora é usado como o carregador de inicialização padrão, então o procedimento para editar os parâmetros do kernel mudou. (Consulte a seção "Etapas de configuração").
  • XFS é agora o sistema de arquivos padrão. O sistema de arquivos ext4 ainda pode ser usado, se desejar.

Passos de configuração

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

  2. Selecione Conectar para abrir uma janela de console para a VM.

  3. Crie um arquivo chamado network no /etc/sysconfig/ diretório que contém o seguinte texto:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Crie um arquivo chamado ifcfg-eth0 no /etc/sysconfig/network-scripts/ diretório que contém o seguinte texto:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. Modifique as regras do udev para evitar a geração de regras estáticas para as interfaces Ethernet. Essas regras podem causar problemas quando você clona uma VM no Azure ou no Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Certifique-se de que o serviço de rede inicia no momento da inicialização:

    sudo chkconfig network on
    
  7. Instale o python-pyasn1 pacote:

    sudo yum install python3-pyasn1
    
  8. Limpe os metadados atuais do yum e instale todas as atualizações:

    sudo yum clean all
    sudo yum -y update
    
  9. Modifique a linha de inicialização do kernel em sua configuração grub para incluir mais parâmetros do kernel para o Azure. Para fazer essa etapa, abra /etc/default/grub em um editor de texto e edite o GRUB_CMDLINE_LINUX parâmetro. Por exemplo:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Essa modificação também garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração. Ele também desativa as convenções de nomenclatura para placas de interface de rede no Oracle Linux 7 com o UEK. Também recomendamos que você remova os seguintes parâmetros:

       rhgb quiet crashkernel=auto
    

    A inicialização gráfica e silenciosa não é útil em um ambiente de nuvem onde você deseja que todos os logs sejam enviados para a porta serial.

    A crashkernel opção pode ser deixada configurada, se desejar. Esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser um problema para tamanhos menores de VM.

  10. Depois de terminar de editar /etc/default/grub, reconstrua a configuração do grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. 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.

  12. Instale o agente Linux do Azure e as dependências:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Instale cloud-init para lidar com o provisionamento:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Configure waagent para cloud-init:

    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    
    if [[ -f /mnt/resource/swapfile ]]; then
    echo Removing swapfile - Oracle Linux uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  15. Configuração de swap:

    1. Não crie espaço de permuta no disco do sistema operacional.

      Anteriormente, o agente Linux do Azure era usado automaticamente para configurar o espaço de permuta usando o disco de recurso local anexado à VM depois que a VM é provisionada no Azure. No entanto, cloud-init agora lida com esta etapa. Você não deve usar o agente Linux para formatar o disco de recursos para criar o arquivo de permuta. Modifique os seguintes parâmetros de /etc/waagent.conf forma apropriada:

      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
      
    2. Se você quiser montar, formatar e criar a troca, você pode:

      • Passe esse código como uma cloud-init configuração toda vez que criar uma VM.
      • Use uma cloud-init diretiva incorporada na imagem para executar esta etapa sempre que a VM for criada:
      echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
      #cloud-config
      # Generated by Azure cloud image build
      disk_setup:
        ephemeral0:
          table_type: mbr
          layout: [66, [33, 82]]
          overwrite: True
      fs_setup:
        - device: ephemeral0.1
          filesystem: ext4
        - device: ephemeral0.2
          filesystem: swap
      mounts:
        - ["ephemeral0.1", "/mnt/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  16. Desprovisione a VM e prepare-a para provisionamento no Azure:

    sudo cloud-init clean
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    

    Nota

    Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.

  17. Selecione Ação>Desligar no Gerenciador do Hyper-V. Seu VHD do Linux agora está pronto para ser carregado no Azure.

Agora você está pronto para usar seu Oracle Linux .vhd 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.