Preparar uma máquina virtual do Oracle Linux para o Azure
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
Este artigo pressupõe que você já tenha instalado um sistema operacional Oracle Linux em um disco rígido virtual. Existem várias ferramentas para criar arquivos .vhd, por exemplo, uma solução de virtualização como o Hyper-V. Para obter instruções, consulte Instalar a função Hyper-V e Configurar uma máquina virtual.
Notas de instalação do Oracle Linux
- Consulte também Notas Gerais de Instalação do Linux para obter mais dicas sobre como preparar o Linux para o Azure.
- O Hyper-V e o Azure oferecem suporte ao Oracle Linux com o UEK (Unbreakable Enterprise Kernel) ou o Red Hat Compatible Kernel.
- O UEK2 da Oracle não é suportado no Hyper-V e no Azure, pois não inclui os drivers necessários.
- O formato VHDX não é suportado no Azure, apenas VHD fixo. Você pode converter o disco para o formato VHD usando o Gerenciador do Hyper-V ou o cmdlet convert-vhd.
- É necessário suporte de kernel para a montagem de sistemas de ficheiros UDF. Na primeira inicialização no Azure, a configuração de provisionamento é passada para a VM Linux por meio de mídia formatada em UDF anexada ao convidado. O agente Linux do Azure deve ser capaz de montar o sistema de arquivos UDF para ler sua configuração e provisionar a VM.
- Ao instalar o sistema Linux, recomendamos que você use partições padrão em vez de LVM (geralmente o padrão para muitas instalações). Essas partições padrão evitam conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser conectado a outra VM para solução de problemas. LVM ou RAID podem ser usados em discos de dados, se preferir.
- As versões do kernel Linux anteriores à 2.6.37 não suportam NUMA no Hyper-V com tamanhos de VM maiores. Esse problema afeta principalmente distribuições mais antigas que usam o kernel upstream do Red Hat 2.6.32 e foi corrigido no Oracle Linux 6.6 e posterior.
- Não configure uma partição swap no disco do SO.
- Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco bruto para VHD, você deve garantir que o tamanho do disco bruto seja um múltiplo de 1 MB antes da conversão. Consulte Notas de instalação do Linux para obter mais informações.
- Certifique-se de que o
Addons
repositório está ativado. Edite o arquivo (Oracle Linux 6) ou (Oracle Linux 7) e altere a linha para [ol6_addons] ou/etc/yum.repos.d/public-yum-ol7.repo
[ol7_addons] neste arquivo/etc/yum.repos.d/public-yum-ol6.repo
.enabled=1
enabled=0
Oracle Linux 6.X [en]
Importante
Tenha em consideração que o Oracle Linux 6.x já é EOL. O Oracle Linux versão 6.10 tem suporte disponível para ELS, que terminará em 07/2024.
Você deve concluir etapas de configuração específicas no sistema operacional para que a máquina virtual seja executada no Azure.
No painel central do Gerenciador do Hyper-V, selecione a máquina virtual.
Clique em Conectar para abrir a janela da máquina virtual.
Desinstale o NetworkManager executando o seguinte comando:
sudo rpm -e --nodeps NetworkManager
Nota
Se o pacote ainda não estiver instalado, este comando falhará com uma mensagem de erro. Esta mensagem é esperada.
Crie um arquivo chamado network no
/etc/sysconfig/
diretório que contém o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie um arquivo chamado ifcfg-eth0 no
/etc/sysconfig/network-scripts/
diretório que contém o seguinte texto:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique as regras do udev para evitar a geração de regras estáticas para a(s) interface(s) Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Microsoft 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
Verifique se o serviço de rede é iniciado no momento da inicialização executando o seguinte comando:
sudo chkconfig network on
Instale python-pyasn1 executando o seguinte comando:
sudo yum install python-pyasn1
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 isso, abra "/boot/grub/menu.lst" em um editor de texto e certifique-se de que o kernel inclua os seguintes parâmetros:
console=ttyS0 earlyprintk=ttyS0
Essa configuração garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração.
Além do 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 nuvem onde queremos que todos os logs sejam enviados para a porta serial.
A
crashkernel
opção pode ser deixada configurada, se desejado, mas observe que esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser problemático nos tamanhos menores da VM.Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização. Este é geralmente o padrão.
Instale o Agente Linux do Azure executando o seguinte comando. A última versão é 2.0.15.
sudo yum install WALinuxAgent
A instalação do pacote WALinuxAgent remove os pacotes NetworkManager e NetworkManager-gnome se eles ainda não tiverem sido removidos conforme descrito na etapa 2.
Não crie espaço de permuta no disco do SO.
O Agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM após o provisionamento no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado quando a VM é desprovisionada. Depois de instalar o Agente Linux do Azure (consulte a etapa anterior), modifique os seguintes parâmetros em /etc/waagent.conf adequadamente:
ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Execute os seguintes comandos para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
Clique em Ação - Desligar no Gerenciador do Hyper-V>. Seu VHD do Linux agora está pronto para ser carregado no Azure.
Oracle Linux 7.0 e posterior
Alterações no Oracle Linux 7
Preparar uma máquina virtual Oracle Linux 7 para o Azure é semelhante ao Oracle Linux 6, no entanto, há várias diferenças significativas que merecem ser notadas:
- O Azure suporta Oracle Linux com o Unbreakable Enterprise Kernel (UEK) ou o Red Hat Compatible Kernel. Oracle Linux com UEK é recomendado.
- O pacote NetworkManager não entra mais em conflito com o agente Linux do Azure. Este pacote é instalado por padrão e recomendamos que não seja removido.
- GRUB2 agora é usado como o bootloader padrão, então o procedimento para editar os parâmetros do kernel mudou (veja abaixo).
- XFS é agora o sistema de arquivos padrão. O sistema de arquivos ext4 ainda pode ser usado, se desejado.
Etapas de configuração
No Gerenciador do Hyper-V, selecione a máquina virtual.
Clique em Conectar para abrir uma janela de console para a máquina virtual.
Crie um arquivo chamado network no
/etc/sysconfig/
diretório que contém o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie um arquivo chamado ifcfg-eth0 no
/etc/sysconfig/network-scripts/
diretório que contém o seguinte texto:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique as regras do udev para evitar a geração de regras estáticas para a(s) interface(s) Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Microsoft Azure ou no Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Verifique se o serviço de rede é iniciado no momento da inicialização executando o seguinte comando:
sudo chkconfig network on
Instale o pacote python-pyasn1 executando o seguinte comando:
sudo yum install python3-pyasn1
Execute o seguinte comando para limpar os metadados atuais do yum e instalar as atualizações:
sudo yum clean all sudo yum -y update
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 isso, abra "/etc/default/grub" em um editor de texto e edite o
GRUB_CMDLINE_LINUX
parâmetro, por exemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Isso também garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração. Ele também desativa as convenções de nomenclatura para NICs no Oracle Linux 7 com o Unbreakable Enterprise Kernel. Além do acima, recomenda-se remover os seguintes parâmetros:
rhgb quiet crashkernel=auto
A inicialização gráfica e silenciosa não é útil em um ambiente de nuvem onde queremos que todos os logs sejam enviados para a porta serial.
A
crashkernel
opção pode ser deixada configurada, se desejado, mas observe que esse parâmetro reduzirá a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser problemático nos tamanhos menores da VM.Quando terminar de editar "/etc/default/grub" por acima, execute o seguinte comando para reconstruir a configuração grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização. Este é geralmente o padrão.
Instale o Agente Linux do Azure e as dependências:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Instale o cloud-init para lidar com o provisionamento
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Configurar waagent para cloud-init
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
echo "Allow only Azure datasource, disable fetching network setting via IMDS"
sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - Oracle Linux uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
Configuração de swap. Não crie espaço de permuta no disco do sistema operacional.
Anteriormente, o Agente Linux do Azure era usado automaticamente para configurar o espaço de permuta usando o disco de recurso local anexado à máquina virtual depois que a máquina virtual é provisionada no Azure. No entanto, isso agora é tratado pelo cloud-init, você não deve usar o Agente Linux para formatar o disco de recursos criar o arquivo de permuta, modificar os seguintes parâmetros de
/etc/waagent.conf
forma apropriada:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Se você quiser montar, formatar e criar swap, você pode:
- Passe isso como uma configuração cloud-init toda vez que criar uma VM
- Use uma diretiva cloud-init incorporada na imagem que fará isso sempre que a VM for criada:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Execute os seguintes comandos para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure:
sudo cloud-init clean sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Nota
Se você estiver migrando uma máquina virtual específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.
Clique em Ação - Desligar no Gerenciador do Hyper-V>. Seu VHD do Linux agora está pronto para ser carregado no Azure.
Próximos passos
Agora você está pronto para usar seu Oracle Linux .vhd para criar novas máquinas virtuais no Azure. Se esta for a primeira vez que você está carregando o arquivo .vhd no Azure, consulte Criar uma VM Linux a partir de um disco personalizado.