Preparar uma máquina virtual Oracle Linux para o Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Este artigo assume que você já tenha instalado um SO (sistema operacional) Oracle Linux em um VHD (disco rígido virtual). Existem várias ferramentas para criar arquivos .vhd. Um 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 VM (máquina virtual).
Notas de instalação do Oracle Linux
- Para obter mais dicas sobre como preparar o Linux para o Azure, veja Notas gerais de instalação do Linux.
- O Hyper-V e o Azure dão suporte ao Oracle Linux com o UEK (Unbreakable Enterprise Kernel) ou o kernel compatível com o Red Hat.
- O UEK2 da Oracle não é compatível com o Hyper-V e Azure, pois não tem os drivers necessários.
- Não há suporte para o formato VHDX no Azure, somente para o VHD fixo. Você pode converter o disco em formato VHD usando o Gerenciador do Hyper-V ou o cmdlet
convert-vhd
. - É necessário o suporte do kernel à montagem de sistemas de arquivos com UDFs (funções definidas pelo usuário). Na primeira inicialização no Azure, a configuração de provisionamento é transmitida à VM do Linux por meio de mídia formatada por 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.
- Ao instalar o sistema Linux, recomendamos utilizar partições-padrão em vez do gerenciador de volume lógico (LVM), que geralmente é o padrão para muitas instalações. Estas partições-padrão evita conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser anexado a outra VM para solução de problemas. LVM ou RAID também podem ser usados em discos de dados.
- As versões do kernel do Linux anteriores à 2.6.37 não são suporte para NUMA no Hyper-V com tamanhos de VM maiores. Esse problema afeta principalmente distribuições mais antigas que usam o kernel Red Hat 2.6.32 upstream e foi corrigido no Oracle Linux 6.6 e posteriores.
- Não configure uma partição de permuta no disco do sistema operacional.
- 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, consulte Notas de Instalação do Linux.
- Certifique-se de que o repositório
Addons
está habilitado. Edite o arquivo/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) ou/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7). Altere a linhaenabled=0
paraenabled=1
em [ol6_addons] ou [ol7_addons] neste arquivo.
Oracle Linux 6.x
Importante
Lembre-se de que o Oracle Linux 6.x já está no fim da vida útil. O Oracle Linux versão 6.10 tem suporte ao ciclo de vida estendido disponível, que termina em julho de 2024.
Você deve fazer etapas de configuração específicas no sistema operacional para que a VM seja executada no Azure.
No painel central do Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir a janela da VM.
Desinstale
NetworkManager
:sudo rpm -e --nodeps NetworkManager
Observação
Se o pacote ainda não foi instalado, este comando falhará com uma mensagem de erro. Essa mensagem é esperada.
Crie um arquivo chamado network in the
/etc/sysconfig/
que contém o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie um arquivo chamado ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
que contém o seguinte texto:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique as regras de udev para evitar a geração de regras estáticas das interfaces Ethernet. Essas regras podem causar 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network on
Instale
python-pyasn1
:sudo yum install python-pyasn1
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 esta etapa, abra
/boot/grub/menu.lst
em um editor de texto e verifique se o kernel inclui os seguintes parâmetros:console=ttyS0 earlyprintk=ttyS0
Esta 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 das etapas anteriores, recomendamos remover os seguintes parâmetros:
rhgb quiet crashkernel=auto
As inicializações gráfica e silenciosa não são úteis em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial.
A opção
crashkernel
poderá ser deixada configurada se você 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 de VM menores.Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Essa configuração geralmente é o padrão.
Instale o Agente Linux do Azure executando o comando a seguir. A versão mais recente é 2.0.15.
sudo yum install WALinuxAgent
A instalação do pacote
WALinuxAgent
remove os pacotesNetworkManager
eNetworkManager-gnome
se eles ainda não foram removidos, conforme descrito na etapa 2.Não crie 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 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 adequadamente os seguintes parâmetros em
/etc/waagent.conf
: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.
Desprovisione a VM e prepare-a para provisionamento no Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
Selecione Ação>Desligar no Gerenciador do Hyper-V. Agora, o VHD do Linux está pronto para ser carregado no Azure.
Oracle Linux 7.0 e posterior
Siga as etapas nas próximas seções se você estiver usando o Oracle Linux 7.0 ou posterior.
Alterações no Oracle Linux 7
Preparar uma VM do Oracle Linux 7 para Azure é semelhante ao Oracle Linux 6, mas é necessário observar algumas diferenças:
- O Azure dá suporte ao Oracle Linux com o UEK (Unbreakable Enterprise Kernel) ou o kernel compatível com o Red Hat. Recomendamos que você use o Oracle Linux com UEK.
- O pacote
NetworkManager
não entra mais em conflito com o agente Linux do Azure. Esse pacote é instalado por padrão e recomendamos que você não o remova. - O GRUB2 agora é usado como carregador de inicialização padrão. Com isso, o procedimento de edição de parâmetros do kernel mudou. (Consulte a seção "Etapas de configuração".)
- O XFS agora é o sistema de arquivos padrão. O sistema de arquivos ext4 ainda poderá ser usado, se você desejar.
Etapas de configuração
No Gerenciador do Hyper-V, selecione a VM.
Selecione Conectar para abrir uma janela do console para a VM.
Crie um arquivo chamado network in the
/etc/sysconfig/
que contém o seguinte texto:NETWORKING=yes HOSTNAME=localhost.localdomain
Crie um arquivo chamado ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
que contém o seguinte texto:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique as regras de udev para evitar a geração de regras estáticas das interfaces Ethernet. Essas regras podem causar 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
Verifique se o serviço de rede é iniciado na hora de inicialização:
sudo chkconfig network on
Instalar o pacote
python-pyasn1
:sudo yum install python3-pyasn1
Desmarque os metadados yum atuais e instale todas as atualizações:
sudo yum clean all sudo yum -y update
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 net.ifnames=0"
Essa modificaçã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 as convenções de nomenclatura para cartões de interface de rede no Oracle Linux 7 com o UEK. Também recomendamos que você remova os seguintes parâmetros:
rhgb quiet crashkernel=auto
As inicializações gráfica e silenciosa não são úteis em um ambiente de rede, quando você deseja que todos os logs sejam enviados para a porta serial.
A opção
crashkernel
poderá ser deixada configurada se você 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 de VM menores.Após concluir a edição de
/etc/default/grub
, recompile a configuração do grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Essa configuração geralmente é o padrão.
Instale o agente Linux do Azure e as dependências:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Instale
cloud-init
para lidar com o provisionamento:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Configure
waagent
paracloud-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 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 com o disco de recurso local que é anexado à VM após o provisionamento no Azure. No entanto,
cloud-init
agora lida com essa etapa. 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
: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 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. - Usar uma diretiva
cloud-init
inclusa na imagem para executar essa etapa 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
- Passar esse código como uma configuração
Desprovisione a VM e prepare-a 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
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.
Selecione Ação>Desligar no Gerenciador do Hyper-V. Agora, o VHD do Linux está pronto para ser carregado no Azure.
Conteúdo relacionado
Agora você está pronto para usar o .vhd do Oracle Linux 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.