Preparación de una máquina virtual Oracle Linux para Azure
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
En este artículo se supone que ya ha instalado un sistema operativo Oracle Linux en un disco duro virtual. Existen varias herramientas para crear archivos .vhd; por ejemplo, una solución de virtualización como Hyper-V. Para obtener instrucciones, consulte Instalación del rol de Hyper-V y configuración de una máquina Virtual.
Notas sobre la instalación de Oracle Linux
- Consulte también las Notas generales sobre la instalación de Linux para obtener más consejos sobre la preparación de Linux para Azure.
- Hyper-V y Azure admiten Oracle Linux tanto con el kernel de empresa ininterrumpible (UEK) como con el kernel compatible con Red Hat.
- El UEK2 de Oracle no se admite en Hyper-V y Azure porque no incluye los controladores requeridos.
- El formato VHDX no se admite en Azure, solo el VHD fijo. Puede convertir el disco al formato VHD con el Administrador de Hyper-V o el cmdlet Convert-VHD.
- Se requiere la compatibilidad de kernel para el montaje de sistemas de archivos UDF. Al arrancar Azure la primera vez, la configuración de aprovisionamiento se pasa a la máquina virtual Linux a través de medios con formato UDF conectados al invitado. El agente Linux de Azure debe poder montar el sistema de archivos UDF para leer su configuración y aprovisionar la máquina virtual.
- Al instalar el sistema Linux se recomienda usar las particiones estándar en lugar de un LVM (que a menudo viene de forma predeterminada en muchas instalaciones). Estas particiones estándar impiden que el nombre del LVM entre en conflicto con las máquinas virtuales clonadas, especialmente si en algún momento hace falta adjuntar un disco de SO a otra máquina virtual para solucionar problemas. LVM o RAID se pueden utilizar en discos de datos si así se prefiere.
- Las versiones de kernel de Linux inferiores a la versión 2.6.37 no admiten NUMA en Hyper-V con tamaños de VM más grandes. Este problema afecta principalmente a las distribuciones anteriores que usan el kernel Red Hat 2.6.32 de canal de subida y se ha corregido en Oracle Linux 6.6 y las versiones posteriores.
- No configure una partición de intercambio en el disco del SO.
- 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, tiene que asegurarse de que su tamaño es un múltiplo de 1 MB antes de la conversión. Para más información, consulte Notas sobre la instalación de Linux.
- Asegúrese de que el repositorio
Addons
está habilitado. Edite el archivo/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) o/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7) y cambie la líneaenabled=0
aenabled=1
en [ol6_addons] o [ol7_addons] en este archivo.
Oracle Linux 6.X
Importante
Tenga en cuenta que Oracle Linux 6.x ya es EOL. La versión 6.10 de Oracle Linux tiene compatibilidad con ELS disponible, que finalizará el 07/2024.
Debe completar los pasos de configuración específicos del sistema operativo para que la máquina virtual se ejecute en Azure.
Seleccione la máquina virtual en el panel central del Administrador de Hyper-V.
Haga clic en Conectar para abrir la ventana de la máquina virtual.
Desinstale NetworkManager ejecutando el comando siguiente:
sudo rpm -e --nodeps NetworkManager
Nota:
Si el paquete todavía no está instalado, se produce un mensaje de error en este comando. Se espera este mensaje.
Cree un archivo llamado network in the
/etc/sysconfig/
que contenga el texto siguiente:NETWORKING=yes HOSTNAME=localhost.localdomain
Cree un archivo llamado ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
que contenga el texto siguiente:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique las reglas udev para impedir que se generen 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 ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
Ejecute el comando siguiente para asegurarse de que el servicio de red se inicia en el arranque:
sudo chkconfig network on
Instale python-pyasn1 ejecutando el comando siguiente:
sudo yum install python-pyasn1
Modifique la línea de arranque de kernel de su configuración grub para que incluya más 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 incluye los parámetros siguientes:
console=ttyS0 earlyprintk=ttyS0
Esta configuració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 de lo anterior, se recomienda quitar los parámetros siguientes:
rhgb quiet crashkernel=auto
Los arranques gráfico y silencioso no resultan útiles en un entorno en la nube en el que queremos que todos los registros se envíen al puerto serie.
Es posible dejar la opción
crashkernel
configurada si se prefiere, pero tenga en cuenta que este parámetro reducirá la cantidad de memoria disponible en la máquina virtual en 128 MB o más, lo cual puede resultar problemático en tamaños de máquina virtual más reducidos.Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque. Este es normalmente el valor predeterminado.
Instale el Agente de Linux de Azure ejecutando el comando siguiente: La versión más reciente es la 2.0.15.
sudo yum install WALinuxAgent
La instalación del paquete WALinuxAgent elimina los paquetes NetworkManager y NetworkManager-gnome, si es que aún no se han eliminado como se describe en el paso 2.
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 utilizando 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 que podría tener que vaciarse cuando la máquina virtual se desaprovisiona. Después de instalar el Agente de Linux de Azure (consulte el paso anterior), modifique apropiadamente los parámetros siguientes en /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.
Ejecute los comandos siguientes para desaprovisionar la máquina virtual y prepararla para aprovisionarse en Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
Haga clic en Acción> Apagar en el Administrador de Hyper-V. El VHD de Linux ya está listo para cargarse en Azure.
Oracle Linux 7.0 y posterior
Cambios en Oracle Linux 7
La preparación de una máquina virtual Oracle Linux 7 para Azure es similar a Oracle Linux 6, aunque hay varias diferencias importantes que es necesario tener en cuenta:
- Azure admite Oracle Linux tanto con el kernel de empresa ininterrumpible (UEK) como con el kernel compatible con Red Hat. Se recomienda Oracle Linux con UEK.
- El paquete NetworkManager ya no entra en conflicto con el agente de Linux de Azure. Este paquete está instalado de manera predeterminada y recomendamos que no se quite.
- GRUB2 se utiliza ahora como cargador de arranque predeterminado; por ello, el proceso de edición de los parámetros de kernel ha cambiado (ver más adelante).
- XFS es ahora el sistema de archivos predeterminado. El sistema de archivos ext4 se puede seguir utilizando si así se desea.
Pasos de configuración
En el Administrador de Hyper-V, seleccione la máquina virtual.
Haga clic en Conectar para abrir una ventana de consola de la máquina virtual.
Cree un archivo llamado network in the
/etc/sysconfig/
que contenga el texto siguiente:NETWORKING=yes HOSTNAME=localhost.localdomain
Cree un archivo llamado ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
que contenga el texto siguiente:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifique las reglas udev para impedir que se generen 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 ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Ejecute el comando siguiente para asegurarse de que el servicio de red se inicia en el arranque:
sudo chkconfig network on
Instale el paquete python-pyasn1 ejecutando el comando siguiente:
sudo yum install python3-pyasn1
Ejecute el comando siguiente para borrar los metadatos de yum actuales e instalar las actualizaciones:
sudo yum clean all sudo yum -y update
Modifique la línea de arranque de kernel de su configuración grub para que incluya más parámetros de kernel para Azure. Para ello, abra "/etc/default/grub" en un editor de texto y edite el parámetro
GRUB_CMDLINE_LINUX
; por ejemplo:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Así también se asegurará de que todos los mensajes de la consola se envían al primer puerto serie, lo que puede ayudar al soporte técnico de Azure con los problemas de depuración de errores. También desactiva las convenciones de nomenclatura para los adaptadores de red en Oracle Linux 7 con el kernel de empresa ininterrumpible. Además de lo anterior, se recomienda quitar los parámetros siguientes:
rhgb quiet crashkernel=auto
Los arranques gráfico y silencioso no resultan útiles en un entorno en la nube en el que queremos que todos los registros se envíen al puerto serie.
Es posible dejar la opción
crashkernel
configurada si así se desea, pero tenga en cuenta que este parámetro reducirá la cantidad de memoria disponible en la máquina virtual en 128 MB o más, lo cual puede resultar problemático en tamaños de VM más reducidos.Una vez que haya finalizado de editar "/etc/default/grub" como se indica anteriormente, ejecute el comando siguiente para volver a compilar la configuración de grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque. Este es normalmente el valor predeterminado.
Instale el Agente de Linux de Azure y sus dependencias:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Instalación de cloud-init para controlar el aprovisionamiento
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Configure 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
Configuración de intercambio No cree un espacio de intercambio en el disco del sistema operativo.
Anteriormente, el agente de Linux de Azure se usaba para configurar automáticamente un espacio de intercambio mediante el disco de recursos local que se adjunta a la máquina virtual, después de que la máquina virtual se aprovisione en Azure. Ahora, en cambio, esto se administra mediante cloud-init; no tiene que usar el agente de Linux para formatear el disco de recursos, crear el archivo de intercambio y modificar los parámetros siguientes en
/etc/waagent.conf
adecuadamente: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
Si quiere montar, formatear y crear un intercambio, puede:
- Pasarlo como una configuración de cloud-init cada vez que cree una máquina virtual
- Usar una directiva de cloud-init preparada en la imagen que hará esto cada vez que se cree la máquina virtual:
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
Ejecute los comandos siguientes para desaprovisionar la máquina virtual y prepararla para aprovisionarse en 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:
Si va a migrar una máquina virtual concreta y no quiere crear una imagen generalizada, omita el paso de desaprovisionamiento.
Haga clic en Acción> Apagar en el Administrador de Hyper-V. El VHD de Linux ya está listo para cargarse en Azure.
Pasos siguientes
Ya está listo para usar el archivo .vhd de Oracle 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.