Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Conjuntos de escalado flexibles Se aplica a: ✔️ Conjuntos de escalado uniformes
En algunos casos, es posible que quiera usar máquinas virtuales (VM) de SUSE Linux Enterprise Server (SLES) personalizadas o de openSUSE Leap Linux en su entorno de Azure y poder compilar estos tipos de máquinas virtuales a través de la automatización. En este artículo se indica cómo crear y cargar un disco duro virtual (VHD) personalizado de Azure que contiene un sistema operativo SUSE Linux.
Requisitos previos
En este artículo se asume que ya ha instalado un SLES u openSUSE Leap en un disco duro virtual. Existen varias herramientas para crear archivos .vhd. Por ejemplo, puede usar una solución de virtualización como Hyper-V. Para obtener instrucciones, consulte Instalación de Hyper-V y creación de una máquina Virtual.
Notas sobre la instalación de SLES/openSUSE Leap
- Consulte Notas generales sobre la instalación de Linux para obtener consejos sobre la preparación de imágenes de Linux para Azure.
- Azure no admite archivos de imagen de disco duro (.vhdx) de Windows. Solo se admiten archivos VHD (.vhd) fuera de las máquinas virtuales. Puede convertir el disco al formato VHD mediante el Administrador de Hyper-V o el cmdlet
Convert-VHD. - Azure admite máquinas virtuales de Gen1 (arranque del BIOS) y Gen2 (arranque UEFI).
- El módulo del kernel de la tabla de asignación de archivos virtuales (VFAT) debe estar habilitado en el kernel.
- No configure una partición de intercambio en el disco del SO. Es posible configurar el agente de Linux para crear un archivo de intercambio en el disco de recursos temporal. Los pasos que se indican más adelante en este artículo proporcionan más información sobre cómo configurar el espacio de intercambio.
- En Azure, todos los discos duros virtuales deben tener un tamaño virtual alineado con 1 MB. Al convertir un disco sin formato en un disco duro virtual, asegúrese de que su tamaño es un múltiplo de 1 MB antes de la conversión. Para obtener más información, consulte las Notas generales sobre la instalación de Linux.
Nota:
La versión 21.2 o posterior de Cloud-init quita el requisito de función definida por el usuario (UDF). Pero sin el módulo udf habilitado, el CD-ROM no se montará durante el aprovisionamiento, lo que impide que se apliquen los datos personalizados. Una solución alternativa consiste en aplicar datos de usuario. Sin embargo, a diferencia de los datos personalizados, los datos de usuario no se cifran. Para obtener más información, consulte Formatos de datos de usuario en la documentación de cloud-init.
Uso de SUSE Studio
SUSE Studio puede crear y administrar fácilmente sus imágenes de SLES y openSUSE Leap para Hyper-V y Azure. SUSE Studio es el enfoque recomendado para personalizar sus propias imágenes SLES y openSUSE Leap.
Como alternativa a la creación de su propio VHD, SUSE también publica imágenes de BYOS (Siglas en inglés de "traiga su propia suscripción") para SLES en VM Depot.
Preparación de SLES para Azure
Configure los módulos de Azure y Hyper-V si es necesario.
Si el hipervisor de software no es Hyper-V, es necesario agregar otros módulos al disco RAM inicial (initramfs) para arrancar correctamente en Azure.
Edite el archivo /etc/dracut.conf y agregue la siguiente línea al archivo:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "Ejecute el comando
dracutpara recompilar el archivo initramfs:sudo dracut --verbose --forceConfiguración de la consola serie.
Para trabajar correctamente con la consola serie, debe configurar varias variables en el archivo /etc/defaults/grub y volver a crear GRUB en el 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 el sistema de SUSE Linux Enterprise para permitir que descargue actualizaciones e instale paquetes.
Actualice el sistema con las revisiones más recientes:
sudo zypper updateInstale el agente de máquina virtual Linux de Azure (
waagent) y 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
waagenty cloud-init para que se inicien en el arranque: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 cleanActualice la configuración de 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.cfgSi desea montar, dar formato y crear una partición de intercambio, una opción es pasar una configuración de cloud-init cada vez que cree una máquina virtual.
Otra opción es usar una directiva cloud-init en la imagen para configurar el espacio de intercambio cada vez que se crea la máquina virtual:
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, el agente Linux de Azure se usaba para configurar automáticamente un espacio de intercambio mediante el disco de recursos local que se asocia a la máquina virtual, después de que la máquina virtual se aprovisione en Azure. Como ahora es cloud-init quien administra este paso; no tiene que usar el agente de Linux de Azure para formatear el disco de recursos ni crear el archivo de intercambio. Use estos comandos para modificar /etc/waagent.conf adecuadamente:
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.confNota:
Si usa una versión de cloud-init anterior a la 21.2, asegúrese de que el módulo
udfestá habilitado. Al quitarlo o deshabilitarlo, se producirá un error de aprovisionamiento o de arranque. La versión 21.2 o posterior de Cloud-init quita el requisito de UDF.Asegúrese de que el archivo /etc/fstab hace referencia al disco mediante su UUID (
by-uuid).Quite las reglas udev y los archivos de configuración del adaptador de red para evitar generar reglas estáticas para las interfaces Ethernet. Estas reglas pueden causar problemas al clonar una máquina virtual en Microsoft Azure o 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*Le recomendamos editar el archivo /etc/sysconfig/network/dhcp y cambiar el parámetro
DHCLIENT_SET_HOSTNAMEpor lo siguiente:DHCLIENT_SET_HOSTNAME="no"En el archivo /etc/sudoers, convierta en comentario o quite las líneas siguientes, si existen:
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'!Asegúrese de que el servidor Secure Shell (SSH) se haya instalado y configurado para iniciarse en el tiempo de arranque:
sudo systemctl enable sshdLimpie la fase cloud-init:
sudo cloud-init clean --seed --logsEjecute los comandos siguientes para desaprovisionar la máquina virtual y prepararla para aprovisionarse en Azure.
Si va a migrar una máquina virtual específica y no desea crear una imagen generalizada, omita el paso de desaprovisionamiento.
sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo export HISTSIZE=0 sudo rm -f ~/.bash_history
Preparación de openSUSE 15.4 y versiones posteriores
Seleccione la máquina virtual en el panel central del Administrador de Hyper-V.
Seleccione Conectar para abrir la ventana de la máquina virtual.
En un terminal, ejecute el comando
zypper lr. Si este comando devuelve una salida similar al ejemplo siguiente, los repositorios se configuran según lo previsto y no es necesario realizar ningún ajuste. (Los números de versión pueden variar).# Alias Nombre habilitado Comprobación de GPG Actualizar 1 Cloud:Tools_15.4 Cloud:Tools-> Sí (r ) Sí Sí 2 openSUSE_stable_OSS openSUSE_st-> Sí (r ) Sí Sí 3 openSUSE_stable_Updates openSUSE_st-> Sí (r ) Sí Sí Si el mensaje "No hay repositorios definidos" aparece desde
zypper lr, los repositorios se deben agregar manualmente.A continuación, se muestran ejemplos de comandos para agregar estos repositorios (las versiones y vínculos pueden 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_OSSPuede verificar entonces que se han agregado los repositorios al volver a ejecutar el comando
zypper lr. Si no hay repositorios de actualizaciones pertinentes habilitados, habilítelos con el comando siguiente:sudo zypper mr -e [NUMBER OF REPOSITORY]Actualice el kernel a la versión más reciente disponible:
sudo zypper up kernel-defaultO para actualizar el sistema operativo con todas las revisiones más recientes:
sudo zypper updateInstale el Agente de Linux de Azure:
sudo zypper install WALinuxAgentModifique la línea de arranque de kernel de su configuración GRUB para que incluya otros parámetros de kernel para Azure. Para ello, abra /boot/grub/menu.lst en un editor de texto y asegúrese de que el kernel predeterminado incluye los parámetros siguientes:
console=ttyS0 earlyprintk=ttyS0Esta opción garantiza que todos los mensajes de la consola se envíen al primer puerto serie, lo que puede ayudar al Soporte técnico de Azure con los problemas de depuración. Además, elimine los parámetros siguientes de la línea de arranque de kernel, si es que están:
libata.atapi_enabled=0 reserve=0x1f0,0x8Se recomienda editar el archivo /etc/sysconfig/network/dhcp y cambiar el parámetro
DHCLIENT_SET_HOSTNAMEpor el siguiente valor:DHCLIENT_SET_HOSTNAME="no"En el archivo /etc/sudoers, convierta en comentario o quite las líneas siguientes, si existen. Este es un paso 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'!Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque.
No cree un espacio de intercambio en el disco del sistema operativo.
El agente de Linux de Azure puede configurar automáticamente un espacio de intercambio usando el disco de recursos local que se adjunta a la máquina virtual después de aprovisionarse en Azure. El disco de recursos local es un disco temporal y se vaciará cuando la máquina virtual se desaprovisione.
Después de instalar el agente Linux de Azure, modifique los parámetros en /etc/waagent.conf de la siguiente manera:
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.Asegúrese de que el Agente de Linux de Azure se ejecute al inicio:
sudo systemctl enable waagent.serviceEjecute los comandos siguientes para desaprovisionar la máquina virtual y prepararla para aprovisionarse en Azure.
Si va a migrar una máquina virtual específica y no desea crear una imagen generalizada, omita el paso de desaprovisionamiento.
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=0Seleccione Acción >Apagar en el Administrador de Hyper-V.
Pasos siguientes
Ya está listo para usar el VHD de SUSE Linux para crear nuevas máquinas virtuales en Azure. Si es la primera vez que carga el archivo .vhd en Azure, vea Crear una VM Linux a partir de un disco personalizado.