Introducción al agente de máquina virtual de Azure Linux

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que está cerca de su estado Final de ciclo vida (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para más información, consulte la Guía de fin de ciclo de vida de CentOS.

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
CentOS 7.x+, 8.x+ 7.x+
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 18.04+, 20.04+, 22.04+ 20.04+, 22.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 es y 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.

  • deprovision+user: realiza todo lo indicado en deprovision 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.Enabledtiene 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: MD5
  • 2a: Blowfish
  • 5: SHA-256
  • 6: 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 predeterminado n 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: