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.
- RHEL 7 usando o Gerenciador do Hyper-V
- RHEL 8+/9+ usando o Gerenciador do Hyper-V
- RHEL 7 usando KVM
- RHEL 8+/9+ usando KVM
- RHEL 7 usando VMware
- RHEL 8+/9+ usando VMware
- RHEL 7 usando o Kickstart
- RHEL 8+/9+ usando o Kickstart
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela de console para a VM.
Crie ou edite o
/etc/sysconfig/network
arquivo e adicione o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
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
Certifique-se de que o serviço de rede inicia no momento da inicialização:
sudo systemctl enable network
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
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 oGRUB_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 deENABLE_BLSCFG=true
Inicialização (BLS) para gerenciar entradas e configurações de inicialização, podem não funcionar corretamente no RHEL 8 e 9. SeENABLE_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.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
.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
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
Instale o agente
cloud-init
Linux 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
Configure
cloud-init
para lidar com o provisionamento:Configure
waagent
paracloud-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.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
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
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
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
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
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
Se você quiser cancelar o registro da assinatura, execute o seguinte comando:
sudo subscription-manager unregister
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
Selecione Ação>Desligar no Gerenciador do Hyper-V. Seu VHD do Linux agora está pronto para ser carregado no Azure.