Introducción al agente de máquina virtual de Azure Linux
El agente Microsoft Azure Linux VM (waagent) administra el aprovisionamiento de Linux y FreeBSD, junto con la interacción de la máquina virtual (VM) con el controlador de tejido de Azure. Además de la funcionalidad de aprovisionamiento que proporciona el agente Linux, Azure ofrece la opción de usar cloud-init para algunos sistemas operativos Linux.
El agente de Linux proporciona la siguiente funcionalidad para las implementaciones de Azure Virtual Machines de Linux y FreeBSD. Para más información, consulte el archivo Léame de Azure Linux VM Agent en GitHub.
Aprovisionamiento de imágenes
- Crea una cuenta de usuario
- Configura los tipos de autenticación de SSH
- Implementa las claves públicas y los pares de claves de SSH
- Configura el nombre de host
- Publica el nombre de host para DNS de plataforma
- Informa de la huella digital de la clave de host SSH a la plataforma
- Administra el disco de recursos
- Formatea y monta discos de recursos
- Configura el espacio de intercambio
Redes
- Administra las rutas para mejorar la compatibilidad con los servidores DHCP de la plataforma
- Asegura la estabilidad del nombre de interfaz de red
Kernel
- Configura NUMA virtual (deshabilitado para kernel 2.6.37)
- Consume entropía de Hyper-V para /dev/random
- Configura los tiempos de espera SCSI para el dispositivo raíz, que pueden ser remotos
Diagnóstico
- Proporciona redirección de consola al puerto serie
Implementaciones de System Center Virtual Machine Manager
- Detecta y ejecuta el agente Virtual Machine Manager para Linux cuando se ejecuta en un entorno System Center Virtual Machine Manager 2012 R2.
Extensión de máquina virtual
- Inserta componentes creados por Microsoft y partners en las VM de Linux para habilitar la automatización del software y la configuración
Puede encontrar una implementación de referencia de extensión de máquina virtual en GitHub.
Comunicación
El flujo de información de la plataforma al agente se produce a través de dos canales:
- Un DVD conectado de tiempo de arranque para las implementaciones de máquina virtual. Este DVD incluye un archivo de configuración compatible con Open Virtualization Format (OVF) que contiene toda la información de aprovisionamiento excepto los pares de claves SSH.
- Un punto de conexión TCP que expone una API de REST que se usa para obtener la configuración de la implementación y la topología.
Requisitos
Las pruebas han confirmado que los siguientes sistemas funcionan con el agente de máquina virtual Linux de Azure.
Nota:
Esta lista puede diferir de las Distribuciones aprobadas de Linux en Azure.
Distribución | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x o superior | 9.x o superior |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | No compatible |
Oracle Linux | 6.4+, 7.x+, 8.x+ | No compatible |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x o superior | 9.x o superior |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu (versiones LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Importante
RHEL/Oracle Linux 6.10 es la única versión de RHEL/OL 6 con Extended Lifecycle Support disponible. El mantenimiento extendido finaliza el 30 de junio de 2024.
Otros sistemas compatibles:
- El agente funciona en más sistemas que los enumerados en la documentación. Sin embargo, no se prueba ni se proporciona la compatibilidad con las distribuciones que no están en la lista aprobada. En particular, FreeBSD no está aprobado. El cliente puede probar FreeBSD 8 y, si se encuentra con problemas, puede abrir un problema en nuestro repositorio de GitHub y es posible que podamos ayudar.
El agente de Linux depende de estos paquetes del sistema para funcionar correctamente:
- Python 2.6
- OpenSSL 1.0+
- OpenSSH 5.3+
- Utilidades del sistema de archivos: sfdisk, fdisk, mkfs, parted
- Herramientas de contraseña: chpasswd, sudo
- Herramientas de procesamiento de texto: sed, grep
- Herramientas de red: ip-route
- Compatibilidad de kernel para el montaje de sistemas de archivos UDF
Asegúrese de que su máquina virtual tiene acceso a la dirección IP 168.63.129.16. Para obtener más información, vea ¿Qué es la dirección IP 168.63.129.16?.
Instalación
El método que se admite para instalar y actualizar Azure Linux VM Agent utiliza un paquete RPM o DEB del repositorio de paquetes de su distribución. Todos los proveedores de distribución avalados integran el paquete Azure Linux VM Agent en sus imágenes y repositorios.
Algunas distribuciones de Linux pueden deshabilitar la característica Actualización automática de Azure Linux VM Agent y algunos de los repositorios también podrían contener versiones anteriores, que podrían tener problemas con las extensiones modernas, por lo que se recomienda tener instalada la versión estable más reciente.
Para asegurarse de que Azure Linux VM Agent se actualiza correctamente, se recomienda tener la opción AutoUpdate.Enabled=Y
en el archivo /etc/waagent.conf
o simplemente agregar como comentario que esa opción también dará como resultado sus valores predeterminados. Si se tiene AutoUpdate.Enabled=N
, Azure Linux VM Agent no se actualizará correctamente.
Para opciones de instalación avanzadas, como la instalación desde una fuente o en ubicaciones o prefijos personalizados, consulte Agente Linux de Microsoft Azure. Aparte de estos escenarios, no se admite ni se recomienda actualizar ni volver a instalar Azure Linux VM Agent desde el origen.
Opciones de línea de comandos
Marcas
verbose
: aumenta la verbosidad del comando especificado.force
: omite la confirmación interactiva para algunos comandos.
Comandos
help
: enumera los comandos y las marcas compatibles.deprovision
: intenta limpiar el sistema y hacerlo apto para su aprovisionamiento. La operación elimina:- Todas las claves de host SSH, si
Provisioning.RegenerateSshHostKeyPair
estáy
en el archivo de configuración. - Configuración
Nameserver
en /etc/resolv.conf. - La contraseña raíz de /etc/shadow, si
Provisioning.DeleteRootPassword
esy
en el archivo de configuración. - Concesiones del cliente de DHCP en caché.
El cliente restablece el nombre de host a
localhost.localdomain
.Advertencia
El desaprovisionamiento no garantiza que se haya borrado toda información confidencial de la imagen y que sea adecuada para su redistribución.
- Todas las claves de host SSH, si
deprovision+user
: realiza todo lo indicado endeprovision
y elimina la última cuenta de usuario aprovisionada (obtenida de /var/lib/waagent) y los datos asociados. Use este parámetro al desaprovisionar una imagen que se aprovisionó anteriormente en Azure para que se pueda capturar y reutilizar.version
: muestra la versión de waagent.serialconsole
: configura GRUB para marcar ttyS0, el primer puerto de serie, como la consola de arranque. Esta opción asegura que los registros de arranque del kernel se envíen al puerto serie y queden disponibles para su depuración.daemon
: ejecuta waagent como demonio para gestionar la interacción con la plataforma. Este argumento se especifica en waagent en el script init de waagent.start
: ejecuta waagent como un proceso en segundo plano.
Configuración
El archivo de configuración /etc/waagent.conf controla las acciones de waagent. Aquí se muestra un ejemplo de un archivo de configuración:
Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.AllowResetSysUser=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
HttpProxy.Host=None
HttpProxy.Port=None
AutoUpdate.Enabled=y
Las opciones de configuración son de tres tipos: Boolean
, String
o Integer
. Puedes especificar las opciones de configuración Boolean
como y
o n
. La palabra clave especial None
se puede usar para algunas entradas de la configuración tipo cadena.
Provisioning.Enabled
Type: Boolean
Default: y
Esta opción permite que el usuario habilite o deshabilite la funcionalidad de aprovisionamiento en el agente. Los valores válidos son y
y n
. Si se deshabilita el aprovisionamiento, se mantiene el host SSH y las claves de usuario en la imagen y se ignora toda configuración en la API de aprovisionamiento de Azure.
Nota
El parámetro Provisioning.Enabled
tiene un valor predeterminado de n
en las imágenes Ubuntu Cloud que usan cloud-init para el aprovisionamiento.
Provisioning.DeleteRootPassword
Type: Boolean
Default: n
Si el valor es y
, el agente borra la contraseña de root en el archivo /etc/shadow durante el proceso de aprovisionamiento.
Provisioning.RegenerateSshHostKeyPair
Type: Boolean
Default: y
Si el valor es y
, el agente borra todos los pares de claves de host SSH de /etc/ssh/ durante el proceso de aprovisionamiento, incluidos ECDSA, DSA y RSA. El agente genera un único par de claves nuevo.
Configure el tipo de cifrado para el nuevo par de claves mediante la entrada Provisioning.SshHostKeyPairType
. Algunas distribuciones vuelven a crear pares de claves SSH para cualquier tipo de cifrado que falte cuando se reinicia el demonio SSH, por ejemplo, después de un reinicio.
Provisioning.SshHostKeyPairType
Type: String
Default: rsa
Puede configurar esta opción a un tipo de algoritmo de encriptación que el demonio SSH soporte en la VM. Los valores admitidos normalmente son rsa
, dsa
y ecdsa
. El archivo putty.exe en Windows no soporta ecdsa
. Por lo tanto, si pretende usar putty.exe en Windows para conectarse a una implementación de Linux, use rsa
o dsa
.
Provisioning.MonitorHostName
Type: Boolean
Default: y
Si el valor es y
, waagent monitoriza la VM Linux para un cambio de nombre de host, tal y como devuelve el comando hostname
. Waagent entonces actualiza automáticamente la configuración de red en la imagen para reflejar el cambio. Para enviar el cambio de nombre a los servidores DNS, la red se reinicia en la máquina virtual. Este reinicio tiene como resultado una breve pérdida de la conectividad con Internet.
Provisioning.DecodeCustomData
Type: Boolean
Default: n
Si el valor es y
, waagent descodifica CustomData
de Base64.
Provisioning.ExecuteCustomData
Type: Boolean
Default: n
Si el valor es y
, waagent ejecuta CustomData
después del aprovisionamiento.
Provisioning.AllowResetSysUser
Type: Boolean
Default: n
Esta opción permite restablecer la contraseña del sistema del usuario. De forma predeterminada, está deshabilitada.
Provisioning.PasswordCryptId
Type: String
Default: 6
Esta opción especifica el algoritmo que utiliza crypt
cuando genera un hash de contraseña. Los valores válidos son:
1
: MD52a
: Blowfish5
: SHA-2566
: SHA-512
Provisioning.PasswordCryptSaltLength
Type: String
Default: 10
Esta opción especifica la longitud de la sal aleatoria utilizada en la generación del hash de la contraseña.
ResourceDisk.Format
Type: Boolean
Default: y
Si el valor es y
, waagent formatea y monta el disco de recursos que la plataforma proporciona, a menos que el tipo de sistema de archivos que el usuario solicitó en ResourceDisk.Filesystem
sea ntfs
. El agente hace que una sola partición de Linux (id. 83) esté disponible en el disco. Esta partición no está formateada si se puede montar correctamente.
ResourceDisk.Filesystem
Type: String
Default: ext4
Esta opción especifica el tipo de sistema de archivos para el disco de recursos. Los valores admitidos varían según la distribución de Linux. Si la cadena es X
, entonces mkfs.X
debe estar presente en la imagen de Linux.
ResourceDisk.MountPoint
Type: String
Default: /mnt/resource
Esta opción especifica la ruta en la cual se monta el disco de recursos. El disco de recursos es un disco temporal que podría vaciarse cuando la máquina virtual se desaprovisiona.
ResourceDisk.MountOptions
Type: String
Default: None
Esta opción especifica las opciones de montaje del disco que se pasarán al comando mount -o
. El valor es una lista de valores separados por comas, por ejemplo, nodev,nosuid
. Para más información, consulte la página del manual de mount(8)
.
ResourceDisk.EnableSwap
Type: Boolean
Default: n
Si establece esta opción, el agente crea un archivo swap (/swapfile) en el disco de recursos y lo agrega al espacio swap del sistema.
ResourceDisk.SwapSizeMB
Type: Integer
Default: 0
Esta opción especifica el tamaño del archivo de intercambio en megabytes.
Logs.Verbose
Type: Boolean
Default: n
Si establece esta opción, se aumenta el nivel de detalle del registro. Waagent crea los registros en /var/log/waagent.log y usa la funcionalidad logrotate
del sistema para girar los registros.
OS.EnableRDMA
Type: Boolean
Default: n
Si establece esta opción, el agente intenta instalar y luego cargar un controlador de kernel RDMA que coincida con la versión del firmware en el hardware subyacente.
OS.RootDeviceScsiTimeout
Type: Integer
Default: 300
Esta opción configura el tiempo de espera SCSI en segundos en el disco del sistema operativo y en las unidades de datos. Si no se configura, se usan los valores predeterminados del sistema.
OS.OpensslPath
Type: String
Default: None
Puede usar esta opción para especificar una ruta alternativa para el binario openssl a usar para operaciones criptográficas.
HttpProxy.Host, HttpProxy.Port
Type: String
Default: None
Si establece esta opción, el agente usa este servidor proxy para acceder a Internet.
AutoUpdate.Enabled
Type: Boolean
Default: y
Habilite o deshabilite la actualización automática para el procesamiento del estado objetivo. El valor predeterminado es y
.
Recogida automática de logs en el Agente Azure Linux Guest
A partir de la versión 2.7+, el Azure Linux Guest Agent tiene una función para recoger automáticamente algunos registros y subirlos. Actualmente, esta característica requiere systemd
. Utiliza un nuevo segmento systemd
llamado azure-walinuxagent-logcollector.slice
para gestionar los recursos mientras realiza la recopilación.
El propósito es facilitar el análisis sin conexión. El agente genera un archivo .zip de algunos registros de diagnóstico antes de cargarlos en el host de la máquina virtual. Los equipos de ingeniería y los profesionales de soporte técnico pueden recuperar el archivo para investigar los problemas del propietario de la máquina virtual. Para obtener información técnica sobre los archivos que recopila el agente Azure Linux Guest, consulte el archivo azurelinuxagent/common/logcollector_manifests.py en el repositorio GitHub del agente.
Puede desactivar esta opción mediante la edición de /etc/waagent.conf. Actualice Logs.Collect
a n
.
Ubuntu Cloud Images
Las imágenes de nube de Ubuntu utilizan cloud-init para realizar muchas tareas de configuración que, de otro modo, gestionaría el Agente de VM de Azure Linux. Se aplican las diferencias siguientes:
Provisioning.Enabled
tiene un valor predeterminadon
en Ubuntu Cloud Images que utilizan cloud-init para realizar tareas de aprovisionamiento.Los parámetros de configuración siguientes no tienen ningún efecto en Ubuntu Cloud Images que usan cloud-init para administrar el disco de recursos y el espacio de intercambio:
ResourceDisk.Format
ResourceDisk.Filesystem
ResourceDisk.MountPoint
ResourceDisk.EnableSwap
ResourceDisk.SwapSizeMB
Para configurar el punto de montaje del disco de recursos y el espacio de intercambio en las Imágenes en la Nube de Ubuntu durante el aprovisionamiento, consulte los siguientes recursos: