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
Ubuntu ahora publica discos duros virtuales de Azure (VHD) oficiales para su descarga en la página web de imágenes en la nube de Ubuntu. Si necesita crear su propia imagen de Ubuntu especializada para Azure en lugar de usar el procedimiento manual siguiente, comience con estos VHD de trabajo conocidos y personalícelos, según sea necesario. Siempre puede encontrar las versiones de imagen más recientes en las siguientes ubicaciones:
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.tar.gz
- Ubuntu 24.04/Noble: noble-server-cloudimg-amd64-azure.vhd.tar.gz
Requisitos previos
En este artículo se da por supuesto que ya ha instalado un sistema operativo Ubuntu Linux en un disco duro virtual. Existen varias herramientas para crear archivos .vhd. Un ejemplo es 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 (VM).
Notas de instalación de Ubuntu
- Para obtener más sugerencias sobre cómo preparar Linux para Azure, consulte Notas generales de instalación de Linux.
- El formato VHDX no se admite en Azure, solo el VHD fijo. Puede convertir el disco al formato VHD mediante el Administrador de Hyper-V o el cmdlet
Convert-VHD. - Al instalar el sistema Linux, se recomienda usar particiones estándar en lugar de Administrador de volúmenes lógicos (LVM), que suele ser el valor predeterminado para 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 también se pueden usar en discos de datos.
- No cree una partición ni un archivo de intercambio en el disco del SO. Puede configurar el agente de aprovisionamiento
cloud-initpara crear un archivo de intercambio o una partición de intercambio en el disco de recursos temporal. Para obtener más información sobre este proceso, consulte los pasos siguientes. - En Azure, todos los discos duros virtuales deben tener un tamaño virtual alineado con 1 MB. Al convertir de un disco sin formato a VHD, debe asegurarse de que el tamaño del disco sin procesar sea un múltiplo de 1 MB antes de la conversión. Para obtener más información, consulte Notas de instalación de Linux.
Pasos manuales
Nota:
Antes de intentar crear su propia imagen personalizada de Ubuntu para Azure, considere la posibilidad de usar las imágenes precompiladas y probadas de la página web de imágenes en la nube de Ubuntu en su lugar.
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.
Sustituya los repositorios actuales de la imagen para utilizar el repositorio de Azure de Ubuntu.
Antes de editar
/etc/apt/sources.list, se recomienda realizar una copia de seguridad:sudo cp /etc/apt/sources.list /etc/apt/sources.list.baksudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt-get updateAhora, las imágenes de Ubuntu de Azure usan el kernel adaptado a Azure. Actualice el sistema operativo al kernel más reciente adaptado a Azure e instale las herramientas de Linux de Azure (incluidas las dependencias de Hyper-V):
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo rebootModifique la línea de arranque del kernel de GRUB para incluir parámetros de kernel adicionales para Azure. Para realizar este paso, abra
/etc/default/gruben un editor de texto, busque la variable llamadaGRUB_CMDLINE_LINUX_DEFAULT(o agréguela si fuera necesario) y edítela para incluir los parámetros siguientes:GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"Guarde este archivo y ciérrelo, y ejecute
sudo update-grub. Este paso 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.Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque. Esta configuración es normalmente el valor predeterminado.
Instale
cloud-init(el agente de aprovisionamiento) y el agente de Linux de Azure (el controlador de extensiones de invitado).Cloud-initusanetplanpara configurar la red del sistema (durante el aprovisionamiento y cada arranque posterior) ygdiskpara crear particiones en los discos del recurso.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagentNota:
El paquete
walinuxagentpuede eliminar los paquetesNetworkManageryNetworkManager-gnome, en caso de que estén instalados.Quite las configuraciones predeterminadas de
cloud-inity los artefactosnetplansobrantes que podrían entrar en conflicto con el aprovisionamiento decloud-initen Azure:sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yamlConfigure
cloud-initpara aprovisionar el sistema mediante el origen de datos de Azure:sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg <<EOF datasource_list: [ Azure ] EOF sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg <<EOF system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg <<EOF reporting: logging: type: log telemetry: type: hyperv EOFConfigure el agente de Linux de Azure para que se base en
cloud-initpara realizar el aprovisionamiento. Para obtener más información sobre estas opciones, consulte el proyecto WALinuxAgent.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/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.confsudo tee -a /etc/waagent.conf <<EOF # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOFLimpie
cloud-inity los registros y artefactos en tiempo de ejecución del agente de Linux de Azure:sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.logDesaprovisione la máquina virtual y prepárela para el aprovisionamiento en Azure.
Nota:
Para generalizar la imagen, el comando
sudo waagent -force -deprovision+userintenta limpiar el sistema y hacer que sea adecuado para el nuevo aprovisionamiento. La opción+userelimina la última cuenta de usuario aprovisionada y los datos asociados.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_historyAdvertencia
El desaprovisionamiento mediante el comando anterior no garantiza que la imagen se borre de toda la información confidencial y sea adecuada para la redistribución.
Seleccione Acción >Apagar en el Administrador de Hyper-V.
Azure solo acepta VHD de tamaño fijo. Si el disco del SO de la VM no es un VHD de tamaño fijo, use el cmdlet
Convert-VHDde PowerShell y especifique la opción-VHDType Fixed. Para obtener más información, consulte los documentos deConvert-VHDen Convert-VHD.Para traer una máquina virtual de generación 2 en Azure, siga estos pasos:
Cambie el directorio al directorio
boot EFI:cd /boot/efi/EFICopie el directorio
ubuntuen un nuevo directorio denominadoboot:sudo cp -r ubuntu/ bootCambie el directorio al directorio “boot” recién creado:
cd bootCambie el nombre del archivo
shimx64.efi:sudo mv shimx64.efi bootx64.efiCambie el nombre del archivo
grub.cfgabootx64.cfg:sudo mv grub.cfg bootx64.cfg
Contenido relacionado
Ya está listo para usar el VHD de Ubuntu 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.