Preparar uma máquina virtual do SLES ou openSUSE para o Azure

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis Aplica-se a: ✔️ Conjuntos de dimensionamento uniformes

Este artigo pressupõe que você já instalou um sistema operacional SUSE ou openSUSE Leap 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 SLES/openSUSE Leap

  • Veja também as Notas de instalação gerais do Linux para obter mais dicas sobre como preparar o Linux para o Azure.
  • O formato VHDX não tem suporte no Azure, somente o VHD fixo. Você pode converter o disco em formato VHD usando o Gerenciador do Hyper-V ou o cmdlet convert-vhd.
  • Ao instalar o sistema Linux, é recomendável que você use partições padrão em vez de LVM (geralmente o padrão para muitas instalações). Isso irá evitar 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. Se você preferir, é possível usar LVM ou RAID em discos de dados.
  • Não configure uma partição de permuta no disco do SO. O agente Linux pode ser configurado para criar um arquivo de permuta no disco de recursos temporários. Verifique as etapas a seguir para obter mais informações a esse respeito.
  • 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. Consulte Notas de Instalação do Linux para obter mais informações.

Use o SUSE Studio

SUSE Studio pode criar e gerenciar facilmente suas imagens SLES e openSUSE Leap no Azure e no Hyper-V. Essa é a abordagem recomendada para personalizar suas próprias imagens SLES e openSUSE Leap.

Como alternativa à criação de seu próprio VHD, o SUSE também publica imagens BYOS (Traga sua Própria Assinatura) para SLES no VM Depot.

Preparar o SUSE Linux Enterprise Server para Azure

  1. No painel central do Gerenciador do Hyper-V, selecione a máquina virtual.

  2. Clique em Conectar para abrir a janela da máquina virtual.

  3. Registre seu sistema SUSE Linux Enterprise para permitir baixar atualizações e instalar pacotes.

  4. Atualize o sistema com os patches mais recentes:

    # sudo zypper update
    
  5. Instalar o Agente Linux do Azure e o cloud-init

    # SUSEConnect -p sle-module-public-cloud/15.2/x86_64  (SLES 15 SP2)
    # sudo zypper refresh
    # sudo zypper install python-azure-agent
    # sudo zypper install cloud-init
    
  6. Habilitar waagent & cloud-init para iniciar na inicialização

    # sudo chkconfig waagent on
    # systemctl enable cloud-init-local.service
    # systemctl enable cloud-init.service
    # systemctl enable cloud-config.service
    # systemctl enable cloud-final.service
    # systemctl daemon-reload
    # cloud-init clean
    
  7. Atualizar a configuração waagent e cloud-init

    # sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    # sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    
    # sudo sh -c 'printf "datasource:\n  Azure:" > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg'
    # sudo sh -c 'printf "reporting:\n  logging:\n    type: log\n  telemetry:\n    type: hyperv" > /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg'
    
  8. Edite o arquivo /etc/default/grub para garantir que os logs do console sejam enviados para a porta serial e atualize o arquivo de configuração principal com grub2-mkconfig -o /boot/grub2/grub.cfg

    console=ttyS0 earlyprintk=ttyS0 
    

    Isso garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, que pode auxiliar o suporte do Azure com problemas de depuração.

  9. Verifique se o arquivo /etc/fstab faz referência ao disco usando seu UUID (by-uuid)

  10. Modifique as regras de udev para evitar a geração de regras estáticas das interfaces Ethernet. Essas regras podem provocar 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
    
  11. É recomendável editar o arquivo "/etc/sysconfig/network/dhcp" e alterar o parâmetro DHCLIENT_SET_HOSTNAME para o seguinte:

    DHCLIENT_SET_HOSTNAME="no"
    
  12. Em "/etc/sudoers", exclua o comentário ou remova as seguintes linhas, se estiverem presentes:

    Defaults targetpw   # ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!
    
  13. Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Geralmente, esse é o padrão.

  14. Configuração de troca

    Não crie espaço de permuta no disco do sistema operacional.

    Antes, o agente de Linux do Azure era usado para configurar automaticamente o espaço de troca usando o disco de recurso local anexado à máquina virtual, depois que esta era provisionada no Azure. No entanto, isso agora é tratado por cloud-init; você não deve usar o agente do Linux para formatar o disco de recursos criar o arquivo de troca, modificar os seguintes parâmetros em /etc/waagent.conf de forma adequada:

    # 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
    

    Se deseja montar, formatar e criar uma permuta, você pode:

    • Passar isso como uma configuração de cloud-init toda vez que criar uma VM.

    • Usar uma diretiva cloud-init inclusa na imagem que fará isso toda vez 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"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  15. Execute os comandos a seguir para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure:

    # sudo rm -rf /var/lib/waagent/
    # sudo rm -f /var/log/waagent.log
    
    # waagent -force -deprovision+user
    # rm -f ~/.bash_history
    
    
    # export HISTSIZE=0
    
    # logout
    
  16. Clique em Ação –> Desligar no Gerenciador do Hyper-V. Agora, seu VHD Linux está pronto para ser carregado no Azure.


Preparar o openSUSE 15.2+

  1. No painel central do Gerenciador do Hyper-V, selecione a máquina virtual.

  2. Clique em Conectar para abrir a janela da máquina virtual.

  3. No shell, execute o comando 'zypper lr'. Se este comando retornar uma saída semelhante à seguinte, os repositórios estarão configurados conforme o esperado – nenhum ajuste é necessário (observe que os números de versão podem variar):

    # Alias Nome habilitado Atualizar
    1 Cloud:Tools_15.2 Cloud:Tools_15.2 Sim Sim
    2 openSUSE_15.2_OSS openSUSE_15.2_OSS Sim Sim
    3 openSUSE_15.2_Updates openSUSE_15.2_Updates Sim Sim

    Se o comando retornar "Nenhum repositório definido...", use os seguintes comandos para adicionar esses repositórios:

    # sudo zypper ar -f http://download.opensuse.org/repositories/Cloud:Tools/openSUSE_15.2 Cloud:Tools_15.2
    # sudo zypper ar -f https://download.opensuse.org/distribution/15.2/repo/oss openSUSE_15.2_OSS
    # sudo zypper ar -f http://download.opensuse.org/update/15.2 openSUSE_15.2_Updates
    

    Em seguida, você pode verificar se os repositórios foram adicionados executando novamente o comando 'zypper lr'. Caso um dos repositórios de atualização relevantes não esteja habilitado, habilite-o com o comando a seguir:

    # sudo zypper mr -e [NUMBER OF REPOSITORY]
    
  4. Atualize o kernel para a versão mais recente disponível:

    # sudo zypper up kernel-default
    

    Ou para atualizar o sistema com todos os patches mais recentes:

    # sudo zypper update
    
  5. Instale o Agente Linux do Azure.

    # sudo zypper install WALinuxAgent
    
  6. Modifique a linha de inicialização do kernel em sua configuração de grub para incluir parâmetros adicionais de kernel para o Azure. Para fazer isso, abra "/boot/grub/menu.lst" em um editor de texto e verifique se o kernel padrão inclui os seguintes parâmetros:

     console=ttyS0 earlyprintk=ttyS0 
    

    Isso garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, que pode auxiliar o suporte do Azure com problemas de depuração. Além disso, remova os seguintes parâmetros da linha de inicialização do kernel, se existirem:

     libata.atapi_enabled=0 reserve=0x1f0,0x8
    
  7. É recomendável editar o arquivo "/etc/sysconfig/network/dhcp" e alterar o parâmetro DHCLIENT_SET_HOSTNAME para o seguinte:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. Importante: Em "/etc/sudoers", exclua o comentário ou remova as seguintes linhas, se estiverem presentes:

    Defaults targetpw   # ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!
    
  9. Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização. Geralmente, esse é o padrão.

  10. 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 que é anexado à VM após o provisionamento no Azure. Observe que 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 de maneira apropriada:

    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.
    
  11. Execute os comandos a seguir para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure:

    # sudo waagent -force -deprovision
    # export HISTSIZE=0
    # logout
    
  12. Verifique se o Agente Linux do Azure é executado durante a inicialização:

    # sudo systemctl enable waagent.service
    
  13. Clique em Ação –> Desligar no Gerenciador do Hyper-V. Agora, seu VHD Linux está pronto para ser carregado no Azure.

Próximas etapas

Agora, você está pronto para usar o disco rígido virtual SUSE Linux para criar novas máquinas virtuais 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.