Agente de Microsoft Azure Linux
El editor de Downcodes le presentará Microsoft Azure Linux Agent (waagent), que es una herramienta que gestiona el aprovisionamiento de Linux y la interacción de la máquina virtual con Azure Fabric Controller. Proporciona las siguientes capacidades para implementaciones de IaaS de Linux:
1. Aprovisionamiento de imágenes: waagent es responsable de administrar el proceso de aprovisionamiento inicial de las máquinas virtuales Linux, incluida la configuración de la red, la instalación de controladores y la configuración de cuentas de usuario iniciales.
2. Administración de red: el waagent se coordina con Azure Fabric Controller para configurar los ajustes de red de la máquina virtual, como la dirección IP, la máscara de subred y la puerta de enlace.
3. Gestión del kernel: waagent puede gestionar las actualizaciones del kernel de la máquina virtual para garantizar que siempre esté ejecutando la versión más reciente y segura del kernel.
4. Diagnóstico: waagent puede recopilar e informar información sobre el estado de la máquina virtual para ayudar a diagnosticar problemas y resolver fallas.
5. Implementación de SCVMM: waagent admite la integración con System Center Virtual Machine Manager (SCVMM) para administrar y aprovisionar máquinas virtuales.
6. Extensiones de máquinas virtuales: waagent admite la ejecución de extensiones de máquinas virtuales que brindan funcionalidad y personalización adicionales, como instalación de software o monitoreo de métricas.
7. Comunicación: waagent se comunica con Azure Fabric Controller a través de dos canales:
* DVD adjunto al inicio: para implementaciones de IaaS, un DVD adjunto al inicio que contiene un archivo de configuración compatible con OVF proporciona información de aprovisionamiento (además del par de claves SSH).
* API REST: un punto final TCP que expone una API REST para obtener configuraciones de implementación y topología.
waagent puede usar un proxy HTTP a través de las variables de entorno httpproxy (para solicitudes HTTP) o httpsproxy (para solicitudes HTTPS). Debido a las limitaciones de Python, waagent no admite servidores proxy HTTP que requieran autenticación.
De manera similar, si se establece la variable de entorno no_proxy, waagent omitirá el proxy.
Tenga en cuenta que la forma en que se definen estas variables de entorno para el servicio waagent varía entre distribuciones. Para distribuciones que usan systemd, un enfoque común es usar Environment o EnvironmentFile en la sección [Servicio] de la definición del servicio, por ejemplo usando una anulación o insertando un archivo (consulte systemctl edit para anulaciones).
Ejemplo
`
gato /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[Servicio]
Entorno="http_proxy=http://proxy.example.com:80/"
Entorno="https_proxy=http://proxy.example.com:80/"
#
`
waagent pasa su entorno a las extensiones de máquina virtual que ejecuta, incluidas httpproxy y httpsproxy, por lo que definir un proxy para waagent también definirá un proxy para la extensión de máquina virtual.
Si utiliza las variables de configuración HttpProxy.Host y HttpProxy.Port, anulan la configuración del entorno. Tenga en cuenta que estas variables de configuración son locales para el proceso waagent y no se pasan a la extensión de la máquina virtual.
waagent requiere algunos paquetes del sistema para funcionar correctamente. Estos paquetes varían según la distribución.
La instalación a través del repositorio de paquetes de distribución es el único método de instalación admitido.
Puede instalar desde la fuente para obtener opciones más avanzadas, como instalar en una ubicación personalizada o crear una imagen personalizada. Sin embargo, la instalación desde el código fuente puede anular las personalizaciones realizadas en waagent por su distribución y está destinada únicamente a usuarios avanzados. Tenemos un soporte muy limitado para este método.
Para instalar desde el código fuente, puede utilizar las herramientas de configuración:
`
sudo python setup.py instalar --register-service
`
Para Python 3, utilice:
`
sudo python3 setup.py instalar --register-service
`
Puede ver más opciones de instalación ejecutando el siguiente comando:
`
sudo python setup.py instalar --ayuda
`
El archivo de registro de waagent se guarda en /var/log/waagent.log.
Finalmente, puede personalizar su propio paquete RPM o DEB utilizando los ejemplos de configuración proporcionados en las secciones DEB y RPM a continuación. Este método también es adecuado para usuarios avanzados y tenemos un soporte muy limitado para este método.
La actualización a través del repositorio de paquetes de distribución o el uso de actualizaciones automáticas son los únicos métodos admitidos. Puede encontrar más información aquí: Actualización del Agente de Linux.
Para actualizar waagent desde el código fuente, puede utilizar las herramientas de configuración. La actualización desde el código fuente es sólo para usuarios avanzados y tenemos un soporte muy limitado para este método.
`
sudo python setup.py instalar --force
`
Reinicie el servicio waagent:
`
reinicio del agente de servicio sudo
`
Para Ubuntu, use:
`
reinicio del servicio sudo walinuxagent
`
Para CoreOS, utilice:
`
sudo systemctl reiniciar waagent
`
-verbose: aumenta la detalle del comando especificado.
-force: omite la confirmación interactiva para algunos comandos.
-ayuda: enumera los comandos y banderas admitidos.
-desaprovisionamiento: Intenta limpiar el sistema y hacerlo apto para reaprovisionamiento eliminando lo siguiente:
* Todas las claves de host SSH (si Provisioning.RegenerateSshHostKeyPair en el archivo de configuración es 'y').
* Configuración del servidor de nombres en /etc/resolv.conf.
* La contraseña de root en /etc/shadow (si Provisioning.DeleteRootPassword en el archivo de configuración es 'y').
* Arrendamiento de cliente DHCP en caché.
* Restablecer el nombre de host a localhost.localdomain.
¡advertir! el desaprovisionamiento no puede garantizar que la imagen haya sido limpiada de toda la información confidencial y sea adecuada para su redistribución.
-deprovision+user: realiza todas las acciones bajo desaprovisionamiento (descritas anteriormente), además elimina la última cuenta de usuario aprovisionada y sus datos asociados.
-version: muestra la versión del agente.
-serialconsole: configure GRUB para marcar ttyS0 (el primer puerto serie) como la consola de arranque. Esto garantizará que los registros de arranque del kernel se envíen al puerto serie y se puedan utilizar para la depuración.
-daemon: ejecuta waagent como un proceso de demonio para gestionar la interacción con la plataforma. Este parámetro se especifica para waagent en el script de inicialización de waagent.
-start: ejecuta waagent como proceso en segundo plano.
-collect-logs [-full]: ejecuta la utilidad de recopilación de registros, que recopilará registros relacionados con el agente con fines de depuración y los almacenará en la carpeta del agente en el disco. La ubicación exacta se mostrará cuando se ejecute. Utilice el indicador -full para obtener una recopilación de registros más completa.
Un archivo de configuración (/etc/waagent.conf) controla el funcionamiento de waagent. Las líneas vacías y las líneas cuyo primer carácter es # se ignoran (no se admiten comentarios de final de línea).
A continuación se muestra un archivo de configuración de ejemplo:
`
Extensiones.Enabled=y
Extensiones.GoalStatePeriod=6
Aprovisionamiento.Agente=auto
Aprovisionamiento.DeleteRootPassword=n
Aprovisionamiento.RegenerateSshHostKeyPair=y
Aprovisionamiento.SshHostKeyPairType=rsa
Aprovisionamiento.MonitorHostName=y
Aprovisionamiento.DecodeCustomData=n
Aprovisionamiento.ExecuteCustomData=n
Aprovisionamiento.ContraseñaCryptId=6
Aprovisionamiento.ContraseñaCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/recurso
ResourceDisk.MountOptions=Ninguno
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Registros.Detallado=n
Registros.Recopilar=y
Registros.CollectPeriod=3600
SO.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
SO.EnableFIPS=n
OS.OpensslPath=Ninguno
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=Ninguno
HttpProxy.Port=Ninguno
`
Las diversas opciones de configuración se describen en detalle a continuación. Las opciones de configuración se dividen en tres tipos: booleanas, de cadena y enteras. Las opciones de configuración booleanas se pueden especificar como "y" o "n". La palabra clave especial "Ninguno" se puede utilizar con determinados elementos de configuración de cadenas, como se describe a continuación.
Tipo: Booleano
Valor predeterminado: y
Esta opción permite al usuario habilitar o deshabilitar capacidades de procesamiento extendidas en el agente. Los valores válidos son "y" o "n". Si el procesamiento extendido está deshabilitado, el estado del destino se seguirá procesando y se seguirá informando el estado de la máquina virtual, pero solo cada 5 minutos. Se ignorará la configuración extendida en el estado de destino. Tenga en cuenta que funciones como el restablecimiento de contraseña, las actualizaciones de claves SSH y las copias de seguridad dependen de extensiones. Desactive esta opción solo si no necesita la extensión en absoluto.
Nota: Deshabilitar la extensión de esta manera no es lo mismo que no usar el proxy en absoluto. Para hacer esto, el indicador provisionVMAgent se debe configurar en el momento del aprovisionamiento a través de cualquier API que se utilice. Proporcionaremos más detalles sobre esto en nuestra wiki, pero aún no está disponible.
Tipo: Booleano
Valor predeterminado: n
Espere a que se complete el inicio de la nube antes de realizar la expansión de la máquina virtual (estado de inicio de la nube: espere).
Las extensiones de máquina virtual y cloud-init son formas comunes de personalizar una máquina virtual durante la implementación inicial. De forma predeterminada, el agente comenzará a ejecutar el escalado mientras cloud-init aún puede estar en la fase de "configuración" y no esperará a que se complete la fase "final". cloud-init y las extensiones pueden realizar operaciones que entran en conflicto entre sí (por ejemplo, ambos pueden intentar instalar un paquete). Establecer esta opción en 'y' garantiza que la expansión de la máquina virtual solo se realice después de que cloud-init haya completado todas las etapas.
Tenga en cuenta que el uso de esta opción requiere crear una imagen personalizada y establecer el valor de esta opción en 'y' para garantizar que la operación de espera se realice durante la implementación inicial de la máquina virtual.
Tipo: entero
Valor predeterminado: 3600
Tiempo de espera en segundos para que el agente espere el inicio de la nube. Si el tiempo de espera expira, el agente continúa realizando la expansión de la máquina virtual. Consulte Extensions.WaitForCloudInit para obtener más detalles.
Tipo: entero
Valor predeterminado: 6
Con qué frecuencia (en segundos) sondear el nuevo estado de destino e informar el estado de las máquinas virtuales y las extensiones. El estado de destino describe el estado deseado de la extensión en la máquina virtual.
Nota: Establecer este parámetro durante más de unos minutos puede hacer que el estado de la máquina virtual se informe como No responde/No disponible en Azure Portal. Además, esta configuración afecta la rapidez con la que el agente comienza a realizar el escalado.
Tipo: Booleano
Valor predeterminado: y
Permite la actualización automática de controladores de extensiones. Los controladores de extensiones son responsables de administrar extensiones e informar el estado de la máquina virtual. La funcionalidad principal del agente está contenida en el controlador de extensión y se recomienda a los usuarios que habiliten esta opción para mantener la última versión.
Cuando esta opción está habilitada, el agente instalará nuevas versiones a medida que estén disponibles. Cuando está deshabilitado, el agente no instalará ninguna versión nueva, pero utilizará la última versión ya instalada en la máquina virtual.
ilustrar:
Para obtener más información sobre las versiones del agente, consulte nuestras preguntas frecuentes.
Para obtener más información sobre las actualizaciones de los agentes, consulte nuestras preguntas frecuentes.
Para obtener más información sobre AutoUpdate.UpdateToLatestVersion y AutoUpdate.Enabled, consulte nuestras preguntas frecuentes.
Tipo: Booleano
Valor predeterminado: y
Permite la actualización automática de controladores de extensiones. Esta marca se admite por motivos heredados y recomendamos encarecidamente utilizar AutoUpdate.UpdateToLatestVersion en lugar de esta marca.
La diferencia entre estos dos indicadores es que cuando se establece en 'n', AutoUpdate.Enabled usará la versión del controlador de extensión preinstalada en la imagen, mientras que AutoUpdate.UpdateToLatestVersion usará la última versión instalada en la máquina virtual (a través de actualizaciones automáticas). .
En la mayoría de las distribuciones, el valor predeterminado es 'y'.
Tipo: cuerda
Valor predeterminado: automático
Seleccione el agente de aprovisionamiento que desea utilizar (o permita que waagent lo determine especificando "auto"). Las opciones posibles son "auto" (predeterminado), "waagent", "cloud-init" o "disabled".
Tipo: Booleano
Valor predeterminado: y
Esta opción permite al usuario habilitar o deshabilitar la funcionalidad de aprovisionamiento en el agente. Los valores válidos son "y" o "n". Si el aprovisionamiento está deshabilitado, las claves de usuario y host SSH de la imagen se conservarán y se ignorará cualquier configuración especificada en la API de aprovisionamiento de Azure.
NOTA: Esta opción de configuración se ha eliminado y ya no tiene ningún efecto. waagent ahora detecta automáticamente cloud-init como agente de aprovisionamiento (opcionalmente se reemplaza usando Provisioning.Agent).
Tipo: Booleano
Valor predeterminado: n
Supervise los cambios de nombre de host y publique cambios mediante solicitudes DHCP.
Tipo: entero
Valor predeterminado: 30
Con qué frecuencia (en segundos) monitorear los cambios de nombre de host. Si MonitorHostName no está configurado, esta configuración se ignora.
Tipo: Booleano
Valor predeterminado: n
Esta opción habilita/deshabilita el soporte para el aprovisionamiento a través de cloud-init.
Si es verdadero ("y"), el agente esperará a que se complete el inicio de la nube antes de instalar extensiones y procesar el último estado de destino. Provisioning.Enabled Debe estar deshabilitado ("n") para que esta opción surta efecto. Configurar Provisioning.Enabled en verdadero ("y") anula esta opción y ejecuta el código de aprovisionamiento del agente integrado.
NOTA: Esta opción de configuración se ha eliminado y ya no tiene ningún efecto. waagent ahora detecta automáticamente cloud-init como agente de aprovisionamiento (opcionalmente se reemplaza usando Provisioning.Agent).
Tipo: Booleano
Valor predeterminado: n
Si se establece esta opción, la contraseña de root en el archivo /etc/shadow se elimina durante el aprovisionamiento.
Tipo: Booleano
Valor predeterminado: y
Si se configura esta opción, todos los pares de claves de host SSH (ecdsa, dsa y rsa) en /etc/ssh/ se eliminarán durante el aprovisionamiento. y generar un nuevo par de claves.
El tipo de cifrado del nuevo par de claves se puede configurar a través de la entrada Provisioning.SshHostKeyPairType. Tenga en cuenta que algunas distribuciones volverán a crear pares de claves SSH para cualquier tipo de cifrado que falte cuando se reinicie el demonio SSH (por ejemplo, después de un reinicio).
Tipo: cuerda
Predeterminado: rsa
Esto se puede configurar según el tipo de algoritmo de cifrado admitido por el demonio SSH en la máquina virtual. Los valores comúnmente admitidos incluyen "rsa", "dsa" y "ecdsa".
Tenga en cuenta que "ecdsa" no es compatible con "putty.exe" en Windows. Por lo tanto, si planea utilizar putty.exe en Windows para conectarse a una implementación de Linux, utilice "rsa" o "dsa".
Tipo: Booleano
Valor predeterminado: y
Si se configura esta opción, waagent monitoreará las máquinas virtuales Linux en busca de cambios en el nombre de host (según lo devuelto por el comando "hostname") y actualizará automáticamente la configuración de red en la imagen para reflejar los cambios. Para enviar el cambio de nombre al servidor DNS, se reiniciará la red en la máquina virtual. Esto provocará una breve pérdida de conexión a Internet.
Tipo: Booleano
Valor predeterminado: n
Si se configura esta opción, waagent decodificará CustomData de Base64.
Tipo: Booleano
Valor predeterminado: n
Si se establece esta opción, el waagent ejecutará CustomData después del aprovisionamiento.
Tipo: cuerda
Valor predeterminado: 6
El algoritmo utilizado por crypt al generar hashes de contraseñas.
Tipo: cuerda
Valor predeterminado: 10
La longitud de la sal aleatoria utilizada al generar hash de contraseña.
Tipo: Booleano
Valor predeterminado: y
Si se configura esta opción, el disco de recursos proporcionado por la plataforma será formateado y montado por waagent, siempre que el tipo de sistema de archivos solicitado por el usuario en "ResourceDisk.Filesystem" no sea "ntfs". Se proporcionará una única partición de tipo Linux (83) en el disco. Tenga en cuenta que si esta partición se puede montar correctamente, no se formateará.
Tipo: cuerda
Predeterminado: ext4
Esto especifica el tipo de sistema de archivos del disco de recursos. Los valores admitidos varían según la distribución de Linux. Si la cadena es X, mkfs.X debería estar presente en la imagen de Linux. Las imágenes SLES 11 generalmente deben usar 'ext3'. Las imágenes BSD deben usar 'ufs2' aquí.
Tipo: cuerda
Valor predeterminado: /mnt/recurso
Esto especifica la ruta para montar el disco de recursos.
Tipo: cuerda
Valor predeterminado: Ninguno
Especifica las opciones de montaje del disco que se pasarán al comando mount -o. Esta es una lista de valores separados por comas, como 'nodev,nosuid'. Consulte montaje (8) para obtener más detalles.
Tipo: Booleano
Valor predeterminado: n
Si se configura esta opción, se crea un archivo de intercambio (/swapfile) en el disco de recursos y se agrega al espacio de intercambio del sistema.
Tipo: Booleano
Valor predeterminado: n
Si se configura esta opción, el archivo de intercambio (/swapfile) se montará como un sistema de archivos cifrado (marca compatible solo con FreeBSD).
Tipo: entero
Valor predeterminado: 0
El tamaño del archivo de intercambio en megabytes.
Tipo: Booleano
Valor predeterminado: n
Si se establece esta opción, se aumentará la detalle del registro. waagent registra en /var/log/waagent.log y utiliza la función logrotate del sistema para rotar los registros.
Tipo: Booleano
Valor predeterminado: y
Si se configura esta opción, los registros de los agentes se recopilarán periódicamente y se cargarán en una ubicación segura para mejorar la compatibilidad.
NOTA: Esta característica depende de las capacidades de uso de recursos del agente (cgroups); esta marca no tendrá efecto en ninguna distribución que no sea compatible.
Tipo: entero
Valor predeterminado: 3600
Esto configura la frecuencia con la que se recopilan y cargan los registros. El valor predeterminado es cada hora.
Nota: Esto solo tiene efecto cuando la opción Logs.Collect está habilitada.
Tipo: Booleano
Valor predeterminado: n
Si la compatibilidad con SSL no está compilada en Python, el proxy fallará en todas las solicitudes HTTPS. Puede configurar esta opción en 'y' para hacer que el proxy recurra a HTTP en lugar de fallar la solicitud.
Nota: Permitir HTTP puede exponer datos seguros sin darse cuenta.
Tipo: Booleano
Valor predeterminado: n
Si se configura esta opción, el agente intentará instalar y cargar un controlador de kernel RDMA que coincida con la versión de firmware en el hardware subyacente.
Tipo: Booleano
Valor predeterminado: n
Si se configura esta opción, el agente emitirá "OPENSSL_FIPS=1" al entorno al ejecutar comandos OpenSSL. Esto indica a OpenSSL que utilice cualquier biblioteca compatible con FIPS instalada.
Tenga en cuenta que el agente en sí no tiene ningún código relacionado con FIPS. Si no hay instalado un certificado compatible con FIPS, habilitar esta opción provoca que todos los comandos OpenSSL fallen.
Tipo: entero
Valor predeterminado: 30
El agente monitorea los reinicios del cliente DHCP y restaura las reglas de red cuando ocurre un reinicio. Esta configuración determina con qué frecuencia, en segundos, se reinicia la supervisión.
Tipo: entero
Valor predeterminado: 300
Esto configura el tiempo de espera SCSI en segundos en el dispositivo raíz. Si no se establece, se utiliza el valor predeterminado del sistema.
Tipo: entero
Valor predeterminado: 30
Con qué frecuencia (en segundos) configurar el tiempo de espera SCSI en el dispositivo raíz. Si no se establece RootDeviceScsiTimeout, esta configuración se ignora.
Tipo: cuerda
Valor predeterminado: Ninguno
Esto se puede utilizar para especificar una ruta alternativa al binario openssl utilizado para operaciones criptográficas.
Tipo: entero
Valor predeterminado: 30
Con qué frecuencia (en segundos) se eliminan las reglas de udev (75-persistent-net-generator.rules y /etc/udev/rules.d/70-persistent-net.rules) para los nombres de interfaces de red persistentes.
Tipo: entero
Predeterminado: 180
Este valor establece la cantidad de segundos que el agente usa para la opción de configuración SSH ClientAliveInterval.
Tipo: cuerda
Predeterminado: /etc/ssh
Esta opción se puede utilizar para anular la ubicación predeterminada del directorio de configuración SSH.
Tipo: cuerda
Valor predeterminado: Ninguno
Si se configura esta opción, el agente utilizará este servidor proxy para solicitudes HTTP/HTTPS. Estos valores anulan las variables de entorno httpproxy o httpsproxy. Finalmente, se requiere HttpProxy.Host si se usa, y HttpProxy.Port es opcional.
Tipo: Booleano
Valor predeterminado: y
Si se configura esta opción, el agente intentará establecer límites de cgroups para CPU y memoria para el proceso del agente en sí, así como para procesos extendidos. Consulte la wiki para obtener más detalles sobre esto.
Tipo: cuerda
Valor predeterminado: script personalizado, comando de ejecución
Lista de extensiones que se excluirán de las restricciones de cgroups. Esto debe estar separado por comas.
WALinuxAgent recopila y envía datos de uso a Microsoft para ayudarnos a mejorar nuestros productos y servicios. Los datos recopilados se utilizan para realizar un seguimiento del estado del servicio y ayudar con las solicitudes de soporte técnico de Azure. Los datos recopilados no contienen ninguna información de identificación personal. Lea nuestra declaración de privacidad para obtener más información.
WALinuxAgent actualmente no admite la desactivación de la telemetría. Para deshabilitar la recopilación de telemetría, se debe eliminar WALinuxAgent. Si necesita esta funcionalidad, abra un problema en GitHub y describa sus necesidades.
No mantenemos información de embalaje en este repositorio, pero a continuación se muestran algunos ejemplos como referencia. Para conocer los paquetes mantenidos oficialmente, consulte el repositorio de versiones posteriores.
El paquete oficial de Ubuntu WALinuxAgent se puede encontrar aquí.
Ejecutar una vez:
Instalar los paquetes necesarios
`
sudo apt-get -y instalar ubuntu-dev-tools pbuilder python-all debhelper
`
Crear entorno pbuilder
`
sudo pbuilder crear --debootstrapopts --variant=buildd
`
Obtenga waagent.dsc del repositorio de paquetes descendente
Para compilar un paquete, haga lo siguiente desde el directorio superior:
Construir paquete de código fuente
`
paquete de compilación dpkg -S
`
Paquete de compilación
`
sudo pbuilder construir waagent.dsc
`
Obtenga el paquete compilado, generalmente ubicado en /var/cache/pbuilder/result
Las siguientes instrucciones describen cómo crear paquetes rpm.
Instalar herramientas de configuración
`
rizo https://bootstrap.pypa.io/ez_setup.py -o - | python
`
Los siguientes comandos construirán los RPM binarios y de origen:
`
python setup.py bdist_rpm
`
Este proyecto ha adoptado el Código de conducta de Microsoft para código fuente abierto. Para obtener más información, consulte las preguntas frecuentes sobre el Código de conducta o comuníquese con [email protected] si tiene alguna pregunta o comentario adicional.
Ejemplo:
Licencia Apache-2.0