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 6.X, 7.X e 8.X. Os hipervisores para preparação abordados neste artigo são Hyper-V, VM baseada em kernel (KVM) e VMware.
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.
Gerenciador do Hyper-V
Esta seção mostra como preparar uma VM RHEL 6, RHEL 7 ou RHEL 8 usando o Gerenciador Hyper-V.
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 6 usando o Gerenciador do Hyper-V
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao fim da fase de Manutenção. A fase de Manutenção é seguida pela fase de Vida Prolongada. À medida que o RHEL 6 sai das fases Completo/Manutenção, é altamente recomendável que você atualize para o RHEL 7, 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que adicione o complemento RHEL Extended Life Cycle Support.
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela de console para a VM.
No RHEL 6,
NetworkManager
pode interferir com o agente Linux do Azure. Desinstale este pacote:sudo rpm -e --nodeps NetworkManager
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
Mova (ou remova) as regras do udev para evitar a geração de regras estáticas para a interface Ethernet. Essas regras causam problemas quando você clona uma VM no Azure ou no Hyper-V:
Aviso
Muitos tamanhos de VM 'v5' e mais recentes exigem rede acelerada. Se não estiver habilitado, o NetworkManager atribuirá o mesmo endereço IP a todas as interfaces de função virtual. Para evitar endereços IP duplicados, certifique-se de incluir essa regra udev ao migrar para um tamanho mais novo.
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
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded 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 chkconfig network on
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
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-6-server-extras-rpms
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
/boot/grub/menu.lst
em um editor de texto. Certifique-se de que o kernel padrão inclua os seguintes parâmetros:console=ttyS0 earlyprintk=ttyS0
Essa açã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.
Também recomendamos que você remova os seguintes parâmetros:
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. Este parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais. Essa configuração pode ser um problema para tamanhos de VM menores.Certifique-se de que o servidor de shell seguro (SSH) esteja 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
Instale o agente Linux do Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
A instalação do pacote WALinuxAgent remove os
NetworkManager
pacotes eNetworkManager-gnome
se eles ainda não tiverem sido removidos na etapa 3.Não crie espaço de permuta no disco do sistema operacional.
O agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM depois que a VM é provisionada no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM for desprovisionada. Depois de instalar o agente Linux do Azure na etapa anterior, modifique os seguintes parâmetros adequadamente
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Cancelar o registro da assinatura (se necessário):
sudo subscription-manager unregister
Desprovisione a VM e prepare-a para provisionamento no Azure:
Nota
Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo waagent -force -deprovision 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.
RHEL 7 usando o Gerenciador do Hyper-V
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded 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 habilite 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 RHEL 7 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 cat > /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 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
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 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
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 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.
RHEL 8+ usando o Gerenciador do Hyper-V
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela de console para a VM.
Certifique-se de que o serviço Network Manager inicia no momento da inicialização:
sudo systemctl enable NetworkManager.service
Configure a interface de rede para iniciar automaticamente na inicialização e use o Protocolo de Configuração Dinâmica de Host:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
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 e habilite o console serial.
Remova os parâmetros atuais do GRUB:
sudo grub2-editenv - unset kernelopts
Edite
/etc/default/grub
em um editor de texto e adicione os seguintes parâmetros:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Essa modificação também garante que todas as mensagens do console sejam enviadas para a primeira porta serial e habilite 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 NICs.
Recomendamos que você também remova os seguintes parâmetros:
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
Para uma VM habilitada para UEFI, execute o seguinte comando:
sudo 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
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=cloud-init/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 cat > /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 defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Configurar
cloud-init
o registo:sudo echo "Add console log file" sudo 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
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
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 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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
Se você quiser cancelar o registro da assinatura, execute o seguinte comando:
sudo subscription-manager unregister
Execute os seguintes comandos para desprovisionar a VM e prepará-la para provisionamento no Azure:
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
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.Selecione Ação>Desligar no Gerenciador do Hyper-V. Seu VHD do Linux agora está pronto para ser carregado no Azure.
KVM
Esta seção mostra como usar o KVM para preparar uma distro RHEL 6 ou RHEL 7 para carregar no Azure.
RHEL 6 usando KVM
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao fim da fase de Manutenção. A fase de Manutenção é seguida pela fase de Vida Prolongada. À medida que o RHEL 6 sai das fases Completo/Manutenção, é altamente recomendável que você atualize para o RHEL 7, 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que adicione o complemento RHEL Extended Life Cycle Support.
Faça o download da imagem KVM do RHEL 6 no site da Red Hat.
Defina uma senha de root.
Gere uma senha criptografada e copie a saída do comando:
sudo openssl passwd -1 changeme
Defina uma senha de root com guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Altere o segundo campo do usuário root de
!!
para a senha criptografada.Crie uma VM no KVM a partir da imagem qcow2. Defina o tipo de disco como qcow2 e defina o modelo de dispositivo de interface de rede virtual como virtio. Em seguida, inicie a VM e entre como root.
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
Mova (ou remova) as regras do udev para evitar a geração de regras estáticas para a interface Ethernet. Essas regras causam 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
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # 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 chkconfig network on
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 configuração, abra
/boot/grub/menu.lst
em um editor de texto. Certifique-se de que o kernel padrão inclua os seguintes parâmetros:console=ttyS0 earlyprintk=ttyS0
Esta etapa 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.
Também recomendamos que você remova os seguintes parâmetros:
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.Adicione módulos Hyper-V ao initramfs:
Edite
/etc/dracut.conf
e adicione o seguinte conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Reconstruir initramfs:
sudo dracut -f -v
Desinstalação
cloud-init
:sudo yum remove cloud-init
Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização:
sudo chkconfig sshd on
Modifique
/etc/ssh/sshd_config
para incluir as seguintes linhas:PasswordAuthentication yes 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-6-server-extras-rpms
Instale o agente Linux do Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
O agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM depois que a VM é provisionada no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM for desprovisionada. Depois de instalar o agente Linux do Azure na etapa anterior, modifique os seguintes parâmetros adequadamente
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Cancelar o registro da assinatura (se necessário):
sudo subscription-manager unregister
Execute os comandos a seguir para desprovisionar a VM e prepará-la para provisionamento no Azure.
Nota
Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Desligue a VM no KVM.
Converta a imagem qcow2 para o formato VHD.
Nota
Há um bug conhecido nas versões >qemu-img =2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido no QEMU 2.6. Recomendamos que você use qemu-img 2.2.0 ou inferior, ou atualize para 2.6 ou superior. Para mais informações, consulte este sítio Web .
Primeiro, converta a imagem para o formato raw:
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
Certifique-se de que o tamanho da imagem bruta está alinhado com 1 MB. Caso contrário, arredondar o tamanho para alinhar com 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Converta o disco bruto em um VHD de tamanho fixo:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Ou, com o qemu versão 2.6+, inclua a
force_size
opção:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 usando KVM
Faça o download da imagem KVM do RHEL 7 no site da Red Hat. Este procedimento usa o RHEL 7 como exemplo.
Defina uma senha de root.
Gere uma senha criptografada e copie a saída do comando:
sudo openssl passwd -1 changeme
Defina uma senha de root com guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Altere o segundo campo de usuário root de
!!
para a senha criptografada.Crie uma VM no KVM a partir da imagem qcow2. Defina o tipo de disco como qcow2 e defina o modelo de dispositivo de interface de rede virtual como virtio. Em seguida, inicie a VM e entre como root.
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded 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 configuração, abra
/etc/default/grub
em um editor de texto e edite oGRUB_CMDLINE_LINUX
parâmetro. Por exemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Esse comando 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. O comando também desativa as novas convenções de nomenclatura RHEL 7 para NICs. Também recomendamos que você remova os seguintes parâmetros:
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
Adicione módulos Hyper-V ao initramfs.
Editar
/etc/dracut.conf
e adicionar conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Reconstruir initramfs:
sudo dracut -f -v
Desinstalação
cloud-init
:sudo yum remove cloud-init
Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização:
sudo systemctl enable sshd
Modifique
/etc/ssh/sshd_config
para incluir as seguintes linhas:PasswordAuthentication yes 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 Linux do Azure:
sudo yum install WALinuxAgent
Habilite o
waagent
serviço:sudo systemctl enable waagent.service
Instale o
cloud-init
.Siga as etapas em "Preparar uma VM RHEL 7 do Gerenciador do Hyper-V", etapa 12, "Instalar
cloud-init
para lidar com o provisionamento".Configuração de swap:
- Não crie espaço de permuta no disco do sistema operacional.
- Siga as etapas em "Preparar uma VM RHEL 7 a partir do Gerenciador do Hyper-V", etapa 13, "Trocar configuração".
Cancelar o registro da assinatura (se necessário):
sudo subscription-manager unregister
Desprovisione seguindo as etapas em "Preparar uma VM RHEL 7 do Gerenciador do Hyper-V", etapa 15, "Desprovisionar".
Desligue a VM no KVM.
Converta a imagem qcow2 para o formato VHD.
Nota
Há um bug conhecido nas versões >qemu-img =1.1.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido no QEMU 1.6. Recomendamos que você use qemu-img 1.1.0 ou inferior, ou atualize para 1.6 ou superior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem para o formato raw:
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
Certifique-se de que o tamanho da imagem bruta está alinhado com 1 MB. Caso contrário, arredondar o tamanho para alinhar com 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Converta o disco bruto em um VHD de tamanho fixo:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Ou, com o qemu versão 1.6+, inclua a
force_size
opção:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
Esta seção mostra como preparar uma distro RHEL 6 ou RHEL 7 da VMware.
Pré-requisitos
Esta seção pressupõe que você já tenha instalado uma VM RHEL no VMware. Para obter informações sobre como instalar um sistema operacional no VMware, consulte o Guia de instalação do sistema operacional convidado VMware.
- Quando você instala o sistema operacional Linux, recomendamos que você use partições padrão em vez de LVM, que geralmente é o padrão para muitas instalações. O uso de partições evita conflitos de nome LVM com uma VM clonada, especialmente se um disco do sistema operacional precisar ser conectado a outra VM para solução de problemas. LVM ou RAID podem ser usados em discos de dados, se desejar.
- Não configure uma partição swap no disco do sistema operacional. Você pode configurar o agente Linux para criar um arquivo de permuta no disco de recurso temporário. Para obter mais informações, leia as etapas a seguir.
- Ao criar o VHD, selecione Armazenar disco virtual como um único arquivo.
RHEL 6 usando VMware
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao fim da fase de Manutenção. A fase de Manutenção é seguida pela fase de Vida Prolongada. À medida que o RHEL 6 sai das fases Total/Manutenção, recomendamos que você atualize para o RHEL 7 ou 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que adicione o complemento RHEL Extended Life Cycle Support.
No RHEL 6,
NetworkManager
pode interferir com o agente Linux do Azure. Desinstale este pacote:sudo rpm -e --nodeps NetworkManager
Crie um arquivo chamado network no
/etc/sysconfig/
diretório que contém 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
Mova (ou remova) as regras do udev para evitar a geração de regras estáticas para a interface Ethernet. Essas regras causam 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
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # 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 chkconfig network on
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
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-6-server-extras-rpms
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 oGRUB_CMDLINE_LINUX
parâmetro. Por exemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
Esta etapa 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. Também recomendamos que você remova os seguintes parâmetros:
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.Adicione módulos Hyper-V ao initramfs:
Edite
/etc/dracut.conf
e adicione o seguinte conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Reconstruir initramfs:
sudo dracut -f -v
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
Instale o agente Linux do Azure:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Não crie um espaço de permuta no disco do sistema operacional.
O agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM depois que a VM é provisionada no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM for desprovisionada. Depois de instalar o agente Linux do Azure na etapa anterior, modifique os seguintes parâmetros adequadamente
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Cancelar o registro da assinatura (se necessário):
sudo subscription-manager unregister
Execute os seguintes comandos para desprovisionar a VM e prepará-la para provisionamento no Azure:
Nota
Se você estiver migrando uma VM específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Desligue a VM e converta o arquivo VMDK em um arquivo .vhd.
Nota
Há um bug conhecido nas versões >qemu-img =2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido no QEMU 2.6. Recomendamos que você use qemu-img 2.2.0 ou inferior, ou atualize para 2.6 ou superior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem para o formato raw:
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
Certifique-se de que o tamanho da imagem bruta está alinhado com 1 MB. Caso contrário, arredondar o tamanho para alinhar com 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Converta o disco bruto em um VHD de tamanho fixo:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Ou, com o qemu versão 2.6+, inclua a
force_size
opção:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 usando VMware
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 cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded 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=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Essa configuraçã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. Também desativa as novas convenções de nomenclatura RHEL 7 para NICs. Além disso, recomendamos que você remova os seguintes parâmetros:
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
Adicione módulos Hyper-V ao initramfs:
Editar
/etc/dracut.conf
, adicionar conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Reconstruir initramfs:
sudo dracut -f -v
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. 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 Linux do Azure:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
Instalar
cloud-init
:Siga as etapas em "Preparar uma VM RHEL 7 do Gerenciador do Hyper-V", etapa 12, "Instalar
cloud-init
para lidar com o provisionamento".Configuração de swap:
- Não crie espaço de permuta no disco do sistema operacional.
- Siga as etapas em "Preparar uma VM RHEL 7 a partir do Gerenciador do Hyper-V", etapa 13, "Trocar configuração".
Se você quiser cancelar o registro da assinatura, execute o seguinte comando:
sudo subscription-manager unregister
Desprovisione seguindo as etapas em "Preparar uma VM RHEL 7 do Gerenciador do Hyper-V", etapa 15, "Desprovisionar".
Desligue a VM e converta o arquivo VMDK para o formato VHD.
Nota
Há um bug conhecido nas versões >qemu-img =2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido no QEMU 2.6. Recomendamos que você use qemu-img 2.2.0 ou inferior, ou atualize para 2.6 ou superior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem para o formato raw:
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
Certifique-se de que o tamanho da imagem bruta está alinhado com 1 MB. Caso contrário, arredondar o tamanho para alinhar com 1 MB:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Converta o disco bruto em um VHD de tamanho fixo:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Ou, com o qemu versão 2.6+, inclua a
force_size
opção:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Ficheiro Kickstart
Esta seção mostra como preparar uma distro RHEL 7 a partir de um ISO usando um arquivo de kickstart.
RHEL 7 a partir de um arquivo de kickstart
Crie um arquivo de kickstart que inclua o seguinte conteúdo e salve o arquivo. Para obter informações sobre a instalação do kickstart, consulte o Guia de Instalação do Kickstart.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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 echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using cloud-init 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"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
Coloque o arquivo de kickstart onde o sistema de instalação pode acessá-lo.
No Gerenciador do Hyper-V, crie uma nova VM. Na página Conectar Disco Rígido Virtual, selecione Anexar um disco rígido virtual mais tarde e conclua o assistente para Nova Máquina Virtual.
Abra as configurações da VM:
Anexe um novo VHD à VM. Certifique-se de selecionar Formato VHD e Tamanho fixo.
Anexe o ISO de instalação à unidade de DVD.
Configure o BIOS para inicializar a partir do CD.
Inicie a VM. Quando o guia de instalação aparecer, selecione a tecla Tab para configurar as opções de inicialização.
Entre
inst.ks=<the location of the kickstart file>
no final das opções de inicialização e selecione a tecla Enter .Aguarde a conclusão da instalação. Quando terminar, a VM será desligada automaticamente. Seu VHD do Linux agora está pronto para ser carregado no Azure.
Problemas conhecidos
O seguinte problema é conhecido.
O driver Hyper-V não pôde ser incluído no disco RAM inicial ao usar um hipervisor não-Hyper-V
Em alguns casos, os instaladores do Linux podem não incluir os drivers para o Hyper-V no disco RAM inicial (initrd ou initramfs), a menos que o Linux detete que ele está sendo executado em um ambiente Hyper-V.
Quando você estiver usando um sistema de virtualização diferente (por exemplo, VirtualBox ou Xen) para preparar sua imagem do Linux, talvez seja necessário reconstruir o initrd para garantir que pelo menos os módulos e hv_storvsc
kernel hv_vmbus
estejam disponíveis no disco RAM inicial. Esse problema é conhecido, pelo menos em sistemas baseados na distribuição Red Hat upstream.
Para resolver esse problema, adicione módulos Hyper-V ao initramfs e reconstrua-o:
Edite /etc/dracut.conf
e adicione o seguinte conteúdo:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Reconstruir initramfs:
sudo dracut -f -v
Para obter mais informações, consulte Reconstruindo initramfs.
Conteúdos relacionados
- Agora você está pronto para usar seu VHD RHEL 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.
- Para obter mais informações sobre os hipervisores certificados para executar o RHEL, consulte o site da Red Hat.
- Para saber mais sobre como usar imagens RHEL BYOS prontas para produção, vá para a página de documentação de Traga sua própria assinatura.