Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis Aplica-se a: ✔️ Conjuntos de dimensionamento uniformes
Em alguns casos, talvez você queira usar o SUSE Linux Enterprise Server (SLES) personalizado ou VMs (máquinas virtuais) openSUSE Leap Linux em seu ambiente do Azure e ser capaz de criar esses tipos de VMs por meio da automação. Este artigo demonstra como criar e carregar um disco rígido virtual (VHD) personalizado do Azure que contém o sistema operacional SUSE Linux.
Pré-requisitos
Este artigo pressupõe que você já instalou um sistema operacional SLES ou openSUSE Leap Linux em um disco rígido virtual. Existem várias ferramentas para criar arquivos .vhd. Por exemplo, você pode usar uma solução de virtualização, como o Hyper-V. Para obter instruções, veja Instalar o Hyper-V e criar uma máquina virtual.
Notas de instalação do SLES/openSUSE Leap
- Para obter mais dicas sobre como preparar o Linux para o Azure, veja também as Notas de Instalação Geral do Linux.
- O Azure não dá suporte a arquivos de Imagem de Disco Rígido do Windows (.vhdx). Somente arquivos VHD (.vhd) têm suporte fora das máquinas virtuais. Você pode converter o disco em formato VHD usando o Gerenciador do Hyper-V ou o cmdlet
Convert-VHD. - O Azure dá suporte a máquinas virtuais Gen1 (inicialização do BIOS) e Gen2 (inicialização de UEFI).
- O módulo de kernel da tabela de alocação de arquivo virtual (VFAT) deve estar habilitado no kernel.
- Não configure uma partição de permuta no disco do sistema operacional. O agente Linux pode ser configurado para criar um arquivo de permuta no disco de recursos temporários. As etapas posteriores neste artigo fornecem mais informações sobre como configurar o espaço de troca.
- 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 gerais de Instalação do Linux.
Observação
A versão 21.2 ou posterior do cloud-init remove o requisito de UDF (função definida pelo usuário). Mas 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 os 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 Formatos de dados do usuário na documentação do cloud-init.
Use o SUSE Studio
SUSE Studio pode criar e gerenciar facilmente suas imagens SLES e openSUSE Leap no Azure e no Hyper-V. O SUSE Studio é 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 SLES para o Azure
Configure os módulos do Azure e do Hyper-V, se necessário.
Se o hipervisor de software não for Hyper-V, outros módulos precisarão ser adicionados ao disco de RAM inicial (initramfs) para serem inicializados com êxito no Azure.
Edite o arquivo /etc/dracut.conf e adicione a seguinte linha ao arquivo:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Execute o comando
dracutpara recompilar o arquivo initramfs:sudo dracut --verbose --forceHabilitar o console serial.
Para trabalhar com êxito com o console serial, você deve configurar várias variáveis no arquivo /etc/defaults/grub e recriar o GRUB no servidor:
# Add console=ttyS0 and earlyprintk=ttS0 to the variable. # Remove "splash=silent" and "quiet" options. GRUB_CMDLINE_LINUX_DEFAULT="audit=1 no-scroll fbcon=scrollback:0 mitigations=auto security=apparmor crashkernel=228M,high crashkernel=72M,low console=ttyS0 earlyprintk=ttyS0" # Add "console serial" to GRUB_TERMINAL. GRUB_TERMINAL="console serial" # Set the GRUB_SERIAL_COMMAND variable. GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfgRegistre seu sistema SUSE Linux Enterprise para permitir baixar atualizações e instalar pacotes.
Atualize o sistema com os patches mais recentes:
sudo zypper updateInstale o Agente de VM do Linux do Azure (
waagent) e o cloud-init:sudo 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-initHabilite
waagente o cloud-init para iniciar na inicialização:sudo systemctl enable waagent sudo systemctl enable cloud-init-local.service sudo systemctl enable cloud-init.service sudo systemctl enable cloud-config.service sudo systemctl enable cloud-final.service sudo systemctl daemon-reload sudo cloud-init cleanAtualize a configuração do cloud-init:
cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOFsudo cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/05_logging.cfg # 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 # Make sure mounts and disk_setup are in the init stage: 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.cfgSe você quiser montar, formatar e criar uma partição de troca, uma opção é passar uma configuração do cloud-init sempre que você criar uma VM.
Outra opção é usar uma diretiva do cloud-init na imagem para configurar o espaço de troca sempre que a VM for criada:
cat <<EOF | sudo tee -a /etc/systemd/system.conf 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg #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"] EOFAntes, o Agente 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. Como essa etapa agora é tratada pelo cloud-init, você não deve usar Agente Linux do Azure para formatar o disco de recursos ou criar o arquivo de troca. Use estes comandos para modificar o arquivo /etc/waagent.conf adequadamente:
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=auto/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/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.confObservação
Se você estiver usando uma versão do cloud-init anterior à 21.2, verifique se o módulo
udfestá habilitado. Remover ou desabilitar causará uma falha de provisionamento ou inicialização. O cloud-init versão 21.2 ou posterior remove o requisito da UDF.Verifique se o arquivo /etc/fstab faz referência ao disco usando seu UUID (
by-uuid).Remova as regras de udev e os arquivos de configuração do adaptador de rede para evitar a geração de regras estáticas para as interfaces Ethernet. Essas regras provocam problemas ao clonar uma máquina virtual no Microsoft Azure ou no Hyper-V.
sudo rm -f /etc/udev/rules.d/70-persistent-net.rules sudo rm -f /etc/udev/rules.d/85-persistent-net-cloud-init.rules sudo rm -f /etc/sysconfig/network/ifcfg-eth*É recomendável editar o arquivo /etc/sysconfig/network/dhcp e alterar o parâmetro
DHCLIENT_SET_HOSTNAMEpara o seguinte:DHCLIENT_SET_HOSTNAME="no"No arquivo /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 setting together with 'Defaults targetpw'!Certifique-se de que o servidor SSH está instalado e configurado para iniciar no tempo de inicialização:
sudo systemctl enable sshdLimpe a fase de cloud-init:
sudo cloud-init clean --seed --logsExecute os comandos a seguir para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure.
Se você está migrando uma máquina virtual específica e não quer criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo export HISTSIZE=0 sudo rm -f ~/.bash_history
Preparar o openSUSE 15.4+
No painel central do Gerenciador do Hyper-V, selecione a máquina virtual.
Selecione Conectar para abrir a janela da máquina virtual.
No terminal, execute o comando
zypper lr. Se esse comando retornar uma saída semelhante ao exemplo a seguir, os repositórios serão configurados conforme o esperado e nenhum ajuste será necessário. (Os números de versão podem variar.)# Alias Nome Enabled Verificação de GPG Atualizar 1 Cloud:Tools_15.4 Cloud:Tools-> Yes (r ) Sim Sim 2 openSUSE_stable_OSS openSUSE_st-> Yes (r ) Sim Sim 3 openSUSE_stable_Updates openSUSE_st-> Yes (r ) Sim Yes Se a mensagem "Nenhum repositório definido" for exibida no
zypper lr, os repositórios deverão ser adicionados manualmente.Abaixo estão exemplos de comandos para adicionar esses repositórios (versões e links podem variar):
sudo zypper ar -f https://download.opensuse.org/update/openSUSE-stable openSUSE_stable_Updates sudo zypper ar -f https://download.opensuse.org/repositories/Cloud:/Tools/15.4 Cloud:Tools_15.4 sudo zypper ar -f https://download.opensuse.org/distribution/openSUSE-stable/repo/oss openSUSE_stable_OSSEm seguida, você pode verificar se os repositórios foram adicionados executando novamente o comando
zypper lr. Se um dos repositórios de atualização relevantes não estiver habilitado, habilite-o com o comando a seguir:sudo zypper mr -e [NUMBER OF REPOSITORY]Atualize o kernel para a versão mais recente disponível:
sudo zypper up kernel-defaultOu atualize o sistema operacional com todos os patches mais recentes:
sudo zypper updateInstale o Agente Linux do Azure:
sudo zypper install WALinuxAgentModifique 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 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=ttyS0Isto 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. Além disso, remova os seguintes parâmetros da linha de inicialização do kernel, se existirem:
libata.atapi_enabled=0 reserve=0x1f0,0x8É recomendável editar o arquivo /etc/sysconfig/network/dhcp e alterar o parâmetro
DHCLIENT_SET_HOSTNAMEpara a seguinte configuração:DHCLIENT_SET_HOSTNAME="no"No arquivo /etc/sudoers, exclua o comentário ou remova as seguintes linhas, se estiverem presentes. Esta é uma etapa importante.
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'!Confira se o servidor SSH está instalado e configurado para iniciar no tempo de inicialização.
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 será esvaziado quando a VM é desprovisionada.
Depois de instalar o Agente Linux do Azure, modifique os parâmetros em /etc/waagent.conf da seguinte maneira:
ResourceDisk.Format=n ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=n ResourceDisk.SwapSizeMB=2048 ## NOTE: set the size to whatever you need it to be.Verifique se o Agente Linux do Azure é executado durante a inicialização:
sudo systemctl enable waagent.serviceExecute os comandos a seguir para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure.
Se você está migrando uma máquina virtual específica e não quer criar uma imagem generalizada, ignore a etapa de desprovisionamento.
sudo rm -f ~/.bash_history # Remove current user history sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history # Remove root user history sudo export HISTSIZE=0Selecione Ação>Desligar no Gerenciador do Hyper-V.
Próximas etapas
Agora você está pronto para usar o VHD do 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.