Partilhar via


Prepare a Red Hat-based virtual machine for Azure (Preparar uma máquina virtual baseada em Red Hat para o Azure)

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

Neste artigo, você aprenderá a preparar uma máquina virtual (VM) Red Hat Enterprise Linux (RHEL) para uso no Azure. As versões do RHEL abordadas neste artigo são 7.x, 8.X., 9.x. Os hipervisores para preparação abordados neste artigo são Hyper-V, VM baseada em kernel (KVM), VMware e Kickstart.

Para obter mais informações sobre os requisitos de qualificação para participar do programa Cloud Access da Red Hat, consulte o site do Red Hat Cloud Access e Executando o RHEL no Azure. Para saber como automatizar a criação de imagens RHEL, consulte Azure Image Builder.

Nota

Esteja ciente das versões que estão em seu fim de vida útil (EOL) e não são mais suportadas pela Red Hat. As imagens carregadas que estão no EOL ou além dele são suportadas em uma base razoável de esforço comercial. Para obter mais informações, consulte os Ciclos de vida do produto Red Hat.

Pré-requisitos

Esta seção pressupõe que você já obteve um arquivo ISO do site da Red Hat e instalou a imagem RHEL em um disco rígido virtual (VHD). Para obter mais informações sobre como usar o Gerenciador do Hyper-V para instalar uma imagem do sistema operacional, consulte Instalar a função Hyper-V e configurar uma máquina virtual.

Notas de instalação do RHEL

  • O Azure não suporta o formato VHDX. O Azure suporta apenas VHD fixo. Você pode usar o Gerenciador do Hyper-V para converter o disco para o formato VHD ou pode usar o convert-vhd cmdlet. Se você usar o VirtualBox, selecione Tamanho fixo em vez da opção padrão alocada dinamicamente ao criar o disco.
  • O Azure suporta VMs Gen1 (inicialização do BIOS) e Gen2 (inicialização UEFI).
  • O tamanho máximo permitido para o VHD é de 1.023 GB.
  • O módulo do kernel vfat deve ser ativado no kernel.
  • O LVM (Logical Volume Manager) tem suporte e pode ser usado no disco do sistema operacional ou em discos de dados em VMs do Azure. Em geral, recomendamos que você use partições padrão no disco do sistema operacional em vez de LVM. Essa prática evita conflitos de nome LVM com VMs clonadas, especialmente se você precisar anexar um disco do sistema operacional a outra VM idêntica para solução de problemas. Para obter mais informações, consulte a documentação LVM e RAID.
  • É necessário suporte kernel para a montagem de sistemas de ficheiros UDF (Universal Disk Format). Na primeira inicialização no Azure, a mídia formatada em UDF anexada ao convidado passa a configuração de provisionamento para a VM do Linux. O agente Linux do Azure deve ser capaz de montar o sistema de arquivos UDF para ler sua configuração e provisionar a VM. Sem essa etapa, o provisionamento falha.
  • Não configure uma partição swap no disco do sistema operacional. Para obter mais informações, leia 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, leia as etapas a seguir. Consulte também as notas de instalação do Linux.

Nota

Cloud-init >= 21.2 remove o requisito UDF. No entanto, sem o módulo UDF habilitado, o CD-ROM não será montado durante o provisionamento, o que impede que dados personalizados sejam aplicados. Uma solução alternativa é aplicar dados personalizados usando dados do usuário. Ao contrário dos dados personalizados, os dados do usuário não são criptografados. Para obter mais informações, consulte Formatos de dados do usuário.

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

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

  3. Crie ou edite o /etc/sysconfig/network arquivo e adicione o seguinte texto:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Crie ou edite o /etc/sysconfig/network-scripts/ifcfg-eth0 arquivo e adicione o seguinte texto:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    

    Nota

    Quando você usa a Rede Acelerada, a interface sintética criada deve ser configurada para não ser gerenciada usando uma regra udev. Essa ação impede NetworkManager de atribuir o mesmo IP a ele como a interface primária.

    Para aplicá-lo:

    sudo tee <<EOF /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules > /dev/null
    # Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
    # This interface is transparently bonded to the synthetic interface,
    # so NetworkManager should just ignore any SRIOV interfaces.
    SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1"
    EOF
    
  5. Certifique-se de que o serviço de rede inicia no momento da inicialização:

    sudo systemctl enable network
    
  6. Registre sua assinatura Red Hat para habilitar a instalação de pacotes a partir do repositório RHEL:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. 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 modificação, abra /etc/default/grub em um editor de texto e edite o GRUB_CMDLINE_LINUX parâmetro. Por exemplo:

    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    ENABLE_BLSCFG=true
    

    Nota

    Se ENABLE_BLSCFG=false estiver presente em /etc/default/grub vez de , ferramentas como grubedit ou gubby, que dependem da Especificação do Carregador de ENABLE_BLSCFG=trueInicialização (BLS) para gerenciar entradas e configurações de inicialização, podem não funcionar corretamente no RHEL 8 e 9. Se ENABLE_BLSCFG não estiver presente, o comportamento padrão será false.

    Essa modificação também garante que todas as mensagens do console sejam enviadas para a primeira porta serial e permite a interação com o console serial, o que pode ajudar o suporte do Azure com problemas de depuração. Essa configuração também desativa as novas convenções de nomenclatura para placas de interface de rede (NICs).

    rhgb quiet crashkernel=auto
    

    Inicializações gráficas e silenciosas não são úteis em um ambiente de nuvem onde você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção configurada, crashkernel 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.

  8. Depois de concluir a edição /etc/default/grub, execute o seguinte comando para reconstruir a configuração do grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Nota

    Se você estiver carregando uma VM habilitada para UEFI, o comando para atualizar o grub será grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização, que geralmente é o padrão. Modifique /etc/ssh/sshd_config para incluir a seguinte linha:

    ClientAliveInterval 180
    
  10. O pacote WALinuxAgent, WALinuxAgent-<version>, foi enviado para o repositório de extras da Red Hat. Habilite o repositório de extras:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Instale o agente cloud-initLinux do Azure e outros utilitários necessários:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  12. Configure cloud-init para lidar com o provisionamento:

    1. Configure waagent para cloud-init:

      sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/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
      

      Nota

      Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, defina Provisioning.Agent=disabled a /etc/waagent.conf configuração.

    2. Configurar montagens:

      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
      
    3. Configure a fonte de dados do Azure:

      sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
      datasource_list: [ Azure ]
      datasource:
          Azure:
              apply_network_config: False
      EOF
      
    4. Se configurado, remova o arquivo de permuta existente:

      if [[ -f /mnt/resource/swapfile ]]; then
      echo "Removing swapfile" #RHEL uses a swapfile by default
      swapoff /mnt/resource/swapfile
      rm /mnt/resource/swapfile -f
      fi
      
    5. Configurar cloud-init o registo:

      sudo echo "Add console log file"
      sudo tee <<EOF /etc/cloud/cloud.cfg.d/05_logging.cfg > /dev/null
      
      # 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
      
  13. Configuração de swap:

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

      Anteriormente, o agente Linux do Azure era usado para configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM depois que a VM é provisionada no Azure. Esta ação é agora tratada pela cloud-init. 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:

      ResourceDisk.Format=n
      ResourceDisk.EnableSwap=n
      
    • Se você quiser montar, formatar e criar a troca, você pode:

      • Passe esse código como uma cloud-init configuração sempre que criar uma VM por meio de dados personalizados. Recomendamos este método.

      • Use uma cloud-init diretiva incorporada na imagem que executa essa etapa toda vez que a VM é criada.

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo tee /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
        
  14. Configure cloud-init a telemetria para ajudar na solução de problemas de provisionamento:

    sudo tee >> /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF
    # This config enables cloud-init to report provisioning telemetry to aid with troubleshooting
    Reporting:
      logging:
        type: log
      telemetry:
        type: hyperv
    EOF
    
  15. Se você quiser cancelar o registro da assinatura, execute o seguinte comando:

    
    sudo subscription-manager unregister
    
  16. Desprovisione a VM e prepare-a para provisionamento no Azure:

    Atenção

    Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento. A execução do comando waagent -force -deprovision+user torna a máquina de origem inutilizável. Esta etapa destina-se apenas a criar uma imagem generalizada.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean --logs --seed
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  17. Selecione Ação>Desligar no Gerenciador do Hyper-V. Seu VHD do Linux agora está pronto para ser carregado no Azure.