Preparar uma máquina virtual baseada no Red Hat para o Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjunto de dimensionamento uniformes
Neste artigo, você aprende a preparar uma VM (máquina virtual) do RHEL (Red Hat Enterprise Linux) para usá-la no Azure. As versões do RHEL abordadas neste artigo são 6.X, 7.X e 8.X. Neste artigo, abordamos os seguintes hipervisores de preparação: Hyper-V, VM (máquina virtual) baseada em kernel (KVM) e VMware.
Para saber mais informações sobre os requisitos de qualificação para participação no programa Red Hat Cloud Access, confira o site Red Hat Cloud Access e o artigoComo executar o RHEL no Azure. Para saber como automatizar a criação de imagens do Red Hat Enterprise Linux, consulte o Construtor de imagens do Azure.
Observação
Lembre-se das versões que estão no fim da vida útil (EOL) e não têm mais suporte da Red Hat. As imagens carregadas que estão na EOL ou além dela são suportadas em uma base de esforço comercial razoável. Para obter mais informações, confira a Ciclos de vida do produto Red Hat.
Gerenciador do Hyper-V
Esta seção mostra como preparar uma VM RHEL 6, RHEL 7ou RHEL 8 usando o Gerenciador do Hyper-V.
Pré-requisitos
Esta seção pressupõe que você já tenha baixado um arquivo ISO do site do Red Hat e instalado a imagem do RHEL em um VHD (disco rígido virtual). Para obter mais informações sobre como usar o Gerenciador do Hyper-V para instalar uma imagem do sistema operacional, confira Como instalar a função Hyper-V e configurar uma máquina virtual.
Notas de instalação do RHEL
- O Azure não dá suporte ao formato VHDX. O Azure dá suporte apenas ao VHD fixo. Você pode usar o Gerenciador do Hyper-V para converter o disco em formato VHD, ou pode usar o cmdlet
convert-vhd
. Quando criar o disco, se você usar o VirtualBox, selecione Tamanho fixo em vez da opção padrão alocada dinamicamente. - O Azure dá suporte a VMs Gen1 (inicialização do BIOS) e Gen2 (inicialização de UEFI).
- O tamanho máximo permitido para o VHD é 1.023 GB.
- O módulo de kernel vfat precisa ser habilitado no kernel.
- Gerenciador de Volume lógico (LVM) tem suporte e pode ser usado no disco do sistema operacional ou 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 entre VMs clonadas, especialmente se você precisar anexar um disco do sistema operacional em outra VM idêntica para solução de problemas. Para obter mais informações, consulte a documentação de LVM e RAID.
- É necessário suporte a kernel para a montagem de sistemas de arquivos de formato de disco universal (UDF) . Na primeira inicialização no Azure, a configuração de provisionamento é transmitida à VM do Linux por meio de mídia formatada para UDF, a qual é anexada ao convidado. O agente de 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 de troca no disco do sistema operacional. Para obter mais informações, leia as seguintes etapas.
- Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco não processado para VHD, certifique-se de que o tamanho do disco não processado seja um múltiplo de 1 MB antes da conversão. Para obter mais informações, leia as seguintes etapas. Consulte também Notas de instalação do Linux.
Observação
Cloud-init >= 21.2 remove o requisito UDF. Entretanto, sem o módulo UDF habilitado, o CD-ROM não será montado durante o provisionamento, o que impede que os dados personalizados sejam aplicados. Uma solução alternativa é aplicar dados personalizados usando dados do usuário. No entanto, ao contrário dos dados personalizados, os dados do usuário não são criptografados. Para obter mais informações, confira a seção Formatos de dados de usuário.
RHEL 6 usando o Gerenciador do Hyper-V
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao final da fase de Manutenção. A fase de Manutenção é seguida pela Fase de Ciclo de Vida Estendido. À medida que o RHEL 6 faz a transição para fora das fases Completa/Manutenção, recomendamos que você atualize para o RHEL 7, 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que você adicione o Complemento de Suporte ao Ciclo de Vida Estendido do RHEL.
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela do 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 arquivo
/etc/sysconfig/network
e adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Mova (ou remova) as regras de udev para evitar a geração de regras estáticas da interface Ethernet. Essas regras causam problemas ao clonar uma máquina virtual no Azure ou no Hyper-V:
Aviso
Muitos tamanhos de VM 'v5' e mais recentes exigem a Rede Acelerada. Se não estiver habilitada, o NetworkManager atribuirá o mesmo IP a todas as interfaces de função virtual. Para evitar IPs duplicados, inclua 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
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network on
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 do 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 de grub para incluir mais parâmetros do kernel para o Azure. Para fazer esta modificação, abra
/boot/grub/menu.lst
em um editor de texto. Verifique se o kernel padrão inclui 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 auxiliar o suporte do Azure com problemas de depuração.
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 rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. Esse parâmetro reduz a memória disponível na VM em 128 MB ou mais. Essa configuração pode ser um problema para tamanhos de VM menores.Confira se o servidor shell seguro (SSH) está instalado e configurado para iniciar no momento da inicialização, que geralmente é o padrão. Modifique o
/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
Instalar o pacote WALinuxAgent remove os pacotes
NetworkManager
eNetworkManager-gnome
se eles ainda não foram removidos na etapa 3.Não crie o espaço de troca no disco do sistema operacional.
O Agente Linux do Azure pode configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM é desprovisionada. Depois de instalar o agente de Linux do Azure na etapa anterior, modifique os seguintes parâmetros em
/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.
Cancele o registro na assinatura (se necessário):
sudo subscription-manager unregister
Desprovisione a VM e prepare-a para provisionamento no Azure:
Observação
Se você está migrando uma máquina virtual específica e não quer 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. Agora, o VHD do Linux 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 do console para a VM.
Crie ou edite o arquivo
/etc/sysconfig/network
e adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo systemctl enable network
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 de 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 parâmetroGRUB_CMDLINE_LINUX
. 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
Observação
Se ENABLE_BLSCFG=false estiver presente em
/etc/default/grub
em vez deENABLE_BLSCFG=true
, ferramentas como grubedit ou gubby, que dependem da Especificação do Carregador de 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
.Esta modificação também garante que todas as mensagens do console sejam enviadas para a primeira porta serial e habilita a interação com o console serial, o que pode auxiliar o Suporte do Azure em problemas de depuração. Essa configuração também desliga as novas convenções de nomenclatura do RHEL 7 para NICs (placas de interface de rede).
rhgb quiet crashkernel=auto
A inicialização gráfica e silenciosa não é útil em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Depois de editar
/etc/default/grub
, execute o seguinte comando para recompilar a configuração do Grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Observação
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
.Confira se o servidor SSH está instalado e configurado para iniciar no momento da inicialização, que geralmente é o padrão. Modifique o
/etc/ssh/sshd_config
para incluir a seguinte linha:ClientAliveInterval 180
O pacote WALinuxAgent
WALinuxAgent-<version>
foi enviado para o repositório de extras do Red Hat. Habilite o repositório de extras:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Instale o agente do Linux do Azure,
cloud-init
, 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
Observação
Se estiver migrando uma VM específica e não quiser criar uma imagem generalizada, defina
Provisioning.Agent=disabled
na configuração/etc/waagent.conf
.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 swap 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 o registro em log
cloud-init
: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 troca:
Não crie o espaço de troca no disco do sistema operacional.
Anteriormente, o Agente Linux do Azure era usado para configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. Essa ação agora é tratada por
cloud-init
. Você não pode usar o agente do Linux para formatar o disco de recurso para criar o arquivo de troca. Modifique os seguintes parâmetros adequadamente no/etc/waagent.conf
:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Se deseja montar, formatar e criar a troca, você pode:
Passar esse código como uma configuração
cloud-init
sempre que você criar uma VM por meio de dados personalizados. Este método é recomendável.Usar uma diretiva
cloud-init
inclusa na imagem que execute essa etapa sempre que a VM for 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:
Cuidado
Se 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 o computador de origem inutilizável. Essa etapa se destina 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. Agora, o VHD do Linux 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 do console para a VM.
Verifique se o serviço de Gerenciador de Rede é iniciado na hora de inicialização:
sudo systemctl enable NetworkManager.service
Configure a interface de rede para iniciar automaticamente na inicialização e usar o protocolo DHCP:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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 a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 de grub para incluir mais parâmetros de kernel para o Azure e habilitar o console serial.
Remova os parâmetros GRUB atuais:
sudo grub2-editenv - unset kernelopts
Edite
/etc/default/grub
em um editor de texto e adicione o seguinte 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"
Esta modificação também garante que todas as mensagens do console sejam enviadas para a primeira porta serial e habilita a interação com o console serial, o que pode auxiliar o Suporte do Azure em problemas de depuração. Essa configuração também desliga as novas convenções de nomenclatura para NICs.
Também recomendamos que você também remova os seguintes parâmetros:
rhgb quiet crashkernel=auto
A inicialização gráfica e silenciosa não é útil em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Depois de editar
/etc/default/grub
, execute o seguinte comando para recompilar 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
Confira se o servidor SSH está instalado e configurado para iniciar no momento da inicialização, que geralmente é o padrão. Modifique o
/etc/ssh/sshd_config
para incluir a seguinte linha:ClientAliveInterval 180
Instale o agente do Linux do Azure,
cloud-init
, 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
Observação
Se estiver migrando uma VM específica e não quiser criar uma imagem generalizada, defina
Provisioning.Agent=disabled
na configuração/etc/waagent.conf
.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 swap 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 o registro em log
cloud-init
: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 troca:
Não crie o espaço de troca no disco do sistema operacional.
Anteriormente, o Agente Linux do Azure era usado para configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. Essa ação agora é tratada por
cloud-init
. Você não pode usar o agente do Linux para formatar o disco de recurso para criar o arquivo de troca. Modifique os seguintes parâmetros adequadamente no/etc/waagent.conf
:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Passar esse código como uma configuração
cloud-init
sempre que você criar uma VM por meio de dados personalizados. Este método é recomendável.Usar uma diretiva
cloud-init
inclusa na imagem que execute essa etapa sempre que a VM for 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 comandos a seguir 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
Cuidado
Se 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 o computador de origem inutilizável. Essa etapa se destina apenas a criar uma imagem generalizada.Selecione Ação>Desligar no Gerenciador do Hyper-V. Agora, o VHD do Linux está pronto para ser carregado no Azure.
KVM
Esta seção mostra como usar o KVM para preparar um distribuição RHEL 6 ou RHEL 7 para carregamento no Azure.
RHEL 6 usando o KVM
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao final da fase de Manutenção. A fase de Manutenção é seguida pela Fase de Ciclo de Vida Estendido. À medida que o RHEL 6 faz a transição para fora das fases Completa/Manutenção, recomendamos que você atualize para o RHEL 7, 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que você adicione o Complemento de Suporte ao Ciclo de Vida Estendido do RHEL.
Baixe a imagem KVM do RHEL 6 no site do Red Hat.
Definir uma senha raiz.
Gere uma senha criptografada e copie a saída do comando:
sudo openssl passwd -1 changeme
Defina uma senha raiz 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 raiz de
!!
para a senha criptografada.Crie uma VM no KVM da imagem qcow2. Defina o tipo de disco como qcow2 e defina o modelo de dispositivo do adaptador de rede virtual para virtio. Em seguida, inicie a VM e faça logon como raiz.
Crie ou edite o arquivo
/etc/sysconfig/network
e adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Mova (ou remova) as regras de udev para evitar a geração de regras estáticas da interface Ethernet. Essas regras causam problemas ao clonar uma máquina virtual 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
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network on
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 de grub para incluir mais parâmetros do kernel para o Azure. Para fazer esta configuração, abra
/boot/grub/menu.lst
em um editor de texto. Verifique se o kernel padrão inclui 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 auxiliar o suporte do Azure com problemas de depuração.
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 rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Adicione os módulos do Hyper-V em initramfs:
Edite
/etc/dracut.conf
e adicione o seguinte conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Recrie initramfs:
sudo dracut -f -v
Desinstale
cloud-init
:sudo yum remove cloud-init
Verifique se o servidor SSH está instalado e configurado para começar na hora da inicialização:
sudo chkconfig sshd on
Modifique o
/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 do 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 troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM é desprovisionada. Depois de instalar o agente de Linux do Azure na etapa anterior, modifique os seguintes parâmetros em
/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.
Cancele o registro na assinatura (se necessário):
sudo subscription-manager unregister
Execute os comandos a seguir para desprovisionar a VM e prepará-la para provisionamento no Azure.
Observação
Se 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
Finalize a VM no KVM.
Converta a imagem qcow2 para o formato VHD.
Observação
Há um bug conhecido em qemu-img versões >=2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido na versão QEMU 2.6. Recomendamos que você use o qemu-img 2.2.0 ou inferior, ou atualizar para a versão 2.6 ou posterior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem no formato bruto:
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 é alinhado com 1 MB. Caso contrário, arredonde 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 a versão2.6+ do qemu, inclua a opção
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 usando o KVM
Baixe a imagem KVM do RHEL 7 no site do Red Hat. Este procedimento usa o RHEL 7 como exemplo.
Definir uma senha raiz.
Gere uma senha criptografada e copie a saída do comando:
sudo openssl passwd -1 changeme
Defina uma senha raiz 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 raiz de
!!
para a senha criptografada.Crie uma VM no KVM da imagem qcow2. Defina o tipo de disco como qcow2 e defina o modelo de dispositivo do adaptador de rede virtual para virtio. Em seguida, inicie a VM e faça logon como raiz.
Crie ou edite o arquivo
/etc/sysconfig/network
e adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo systemctl enable network
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 de 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 o parâmetroGRUB_CMDLINE_LINUX
. Por exemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Esse comando garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode auxiliar o suporte do Azure com problemas de depuração. O comando também desliga as novas convenções de nomenclatura do RHEL 7 para NICs. 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 rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Depois de editar
/etc/default/grub
, execute o seguinte comando para recompilar a configuração do Grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Adicione os módulos do Hyper-V em initramfs.
Edite
/etc/dracut.conf
e adicione o conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Recrie initramfs:
sudo dracut -f -v
Desinstale
cloud-init
:sudo yum remove cloud-init
Verifique se o servidor SSH está instalado e configurado para começar na hora da inicialização:
sudo systemctl enable sshd
Modifique o
/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 do 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
Habilitar o serviço
waagent
: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 troca:
- Não crie o espaço de troca no disco do sistema operacional.
- Siga as etapas em “Preparar uma VM RHEL 7 usando o Gerenciador do Hyper-V”, etapa 13, “Configuração de troca”.
Cancele o registro na 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”.
Finalize a VM no KVM.
Converta a imagem qcow2 para o formato VHD.
Observação
Há um bug conhecido em qemu-img versões >=1.1.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido na versão QEMU 1.6. Recomendamos que você use o qemu-img 1.1.0 ou inferior, ou atualizar para a versão 1.6 ou posterior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem no formato bruto:
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 é alinhado com 1 MB. Caso contrário, arredonde 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 a versão 1.6+ do qemu, inclua a opção
force_size
.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 um distribuição de RHEL 6 ou RHEL 7 a partir do VMware.
Pré-requisitos
Esta seção pressupõe que você já instalou uma VM RHEL no VMware. Para mais informações sobre como instalar um sistema operacional no VMware, confira Guia de instalação do sistema operacional convidado VMware.
- Ao instalar o sistema operacional Linux, recomendamos usar 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 anexado a outra VM para solução de problemas. Se você quiser, é possível usar LVM ou RAID em discos de dados.
- Não configure uma partição de troca no disco do sistema operacional. O agente Linux pode ser configurado para criar um arquivo de permuta no disco de recursos temporários. Para obter mais informações, leia as seguintes etapas.
- Ao criar o VHD, escolha Armazenar disco virtual como um único arquivo.
RHEL 6 usando VMware
Importante
Em 30 de novembro de 2020, o RHEL 6 chegou ao final da fase de Manutenção. A fase de Manutenção é seguida pela Fase de Ciclo de Vida Estendido. À medida que o RHEL 6 faz a transição para fora das fases Completa/Manutenção, recomendamos que você atualize para o RHEL 7, 8 ou 9. Se você precisar permanecer no RHEL 6, recomendamos que você adicione o Complemento de Suporte ao Ciclo de Vida Estendido do RHEL.
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 in the
/etc/sysconfig/
que contém o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Mova (ou remova) as regras de udev para evitar a geração de regras estáticas da interface Ethernet. Essas regras causam problemas ao clonar uma máquina virtual 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
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network on
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 do 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 de grub para incluir mais parâmetros do kernel para o Azure. Para realizar essa etapa, abra
/etc/default/grub
em um editor de texto e edite o parâmetroGRUB_CMDLINE_LINUX
. 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 auxiliar o suporte do Azure com problemas de depuração. 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 rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Adicione os módulos do Hyper-V em initramfs:
Edite
/etc/dracut.conf
e adicione o seguinte conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Recrie initramfs:
sudo dracut -f -v
Confira se o servidor SSH está instalado e configurado para iniciar no momento da inicialização, que geralmente é o padrão. Modifique o
/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 troca no disco do sistema operacional.
O Agente Linux do Azure pode configurar automaticamente o espaço de troca usando o disco de recurso local que é anexado à VM após o provisionamento da mesma no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado se a VM é desprovisionada. Depois de instalar o agente de Linux do Azure na etapa anterior, modifique os seguintes parâmetros em
/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.
Cancele o registro na assinatura (se necessário):
sudo subscription-manager unregister
Execute os comandos a seguir para desprovisionar a VM e prepará-la para provisionamento no Azure:
Observação
Se 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 para um arquivo .vhd.
Observação
Há um bug conhecido em qemu-img versões >=2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido na versão QEMU 2.6. Recomendamos que você use o qemu-img 2.2.0 ou inferior, ou atualizar para a versão 2.6 ou posterior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem no formato bruto:
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 é alinhado com 1 MB. Caso contrário, arredonde 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 a versão2.6+ do qemu, inclua a opção
force_size
: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 arquivo
/etc/sysconfig/network
e adicione o texto a seguir:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie ou edite o arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0
e adicione o texto a seguir:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Observação
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 impedirá que
NetworkManager
atribua o mesmo IP a ele que 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo systemctl enable network
Registre a sua assinatura do Red Hat para habilitar a instalação de pacotes 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 de 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 parâmetroGRUB_CMDLINE_LINUX
. Por exemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Essa configuração também garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode auxiliar o suporte do Azure com problemas de depuração. Ele também desativa novas convenções de nomenclatura do RHEL 7 para NICs. Além dos itens acima, recomendamos remover os seguintes parâmetros:
rhgb quiet crashkernel=auto
A inicialização gráfica e silenciosa não é útil em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial. Você pode deixar a opção
crashkernel
configurada se quiser. 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 de VM menores.Depois de editar
/etc/default/grub
, execute o seguinte comando para recompilar a configuração do Grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Adicione os módulos do Hyper-V em initramfs:
Edite
/etc/dracut.conf
e adicione o conteúdo:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Recrie initramfs:
sudo dracut -f -v
Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Essa configuração geralmente é o padrão. Modifique o
/etc/ssh/sshd_config
para incluir a seguinte linha:ClientAliveInterval 180
O pacote WALinuxAgent
WALinuxAgent-<version>
foi enviado para o repositório de extras do 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
Instale
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 troca:
- Não crie o espaço de troca no disco do sistema operacional.
- Siga as etapas em “Preparar uma VM RHEL 7 usando o Gerenciador do Hyper-V”, etapa 13, “Configuração de troca”.
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”.
Finalize a VM e converta o arquivo VMDK no formato VHD.
Observação
Há um bug conhecido em qemu-img versões >=2.2.1 que resulta em um VHD formatado incorretamente. O problema foi corrigido na versão QEMU 2.6. Recomendamos que você use o qemu-img 2.2.0 ou inferior, ou atualizar para a versão 2.6 ou posterior. Para obter mais informações, consulte este site.
Primeiro, converta a imagem no formato bruto:
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 é alinhado com 1 MB. Caso contrário, arredonde 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 a versão2.6+ do qemu, inclua a opção
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Arquivo de início rápido
Esta seção mostra como preparar uma distribuição RHEL 7 a partir de uma imagem ISO usando um arquivo início rápido.
RHEL 7 a partir de um arquivo de início rápido
Crie um arquivo de início rápido que inclui o seguinte conteúdo e salve o arquivo. Para obter mais informações sobre a instalação de início rápido, consulte o Guia de instalação de início rápido.
# 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 início rápido 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 posteriormente e conclua o Assistente de Nova Máquina Virtual.
Abra as configurações da VM:
Anexe um novo VHD à VM. Selecione Formato VHD e Tamanho Fixo.
Anexe o ISO de instalação à unidade de DVD.
Configure o BIOS para inicializar do CD.
Inicie a VM. Quando o guia de instalação for exibida, selecikone a tecla Tab para configurar as opções de inicialização.
Insira
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 ela for concluída, a VM será desligada automaticamente. Agora, seu VHD Linux está pronto para ser carregado no Azure.
Problemas conhecidos
O problema a seguir é conhecido.
O driver do Hyper-V não foi incluído no disco de RAM inicial ao usar um hipervisor não Hyper-V
Em alguns casos, os instaladores do Linux podem não incluir os drivers para Hyper-V no disco RAM inicial (initrd ou initramfs), a menos que ele detecte que está em execução em um ambiente Hyper-V.
Quando estiver usando um sistema de virtualização diferente (por exemplo VirtualBox ou Xen) para preparar sua imagem do Linux, talvez você precise recriar o initrd para garantir que pelo menos os módulos hv_vmbus
e hv_storvsc
do kernel fiquem disponíveis no disco de RAM inicial. Esse já é um problema conhecido em sistemas com base em distribuição no Red Hat em upstream.
Para resolver esse problema, adicione os módulos do Hyper-V nos initramfs e os recompile:
Edite /etc/dracut.conf
e adicione o seguinte conteúdo:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Recrie initramfs:
sudo dracut -f -v
Para obter mais informações, consulte Recompilando initramfs.
Conteúdo relacionado
- Agora você está pronto para usar o VHD do RHEL para criar VMs no Azure. Se esta é a primeira vez que você está carregando o arquivo .vhd para o Azure, consulte Criar uma VM do Linux a partir de um disco personalizado.
- Para obter mais informações sobre os hipervisores certificados para execução do RHEL, visite o site da Red Hat.
- Para saber mais sobre como usar imagens BYOS do RHEL prontas para produção, vá para a página de documentação de BYOS.