Ejecute aplicaciones de borde de Linux en PC y servidores con Windows con EFLOW

WSL no es la única forma oficial de ejecutar código Linux en sistemas Windows. Descubra cómo aprovechar Azure IoT Edge para Linux en Windows.

Imagen: Shutterstock / TippaPatt

Microsoft ha dejado claro durante algún tiempo que el borde es tan importante para él como la nube, y el CEO Satya Nadella habla regularmente sobre «la nube inteligente y el borde inteligente». Gran parte de su enfoque se ha centrado en llevar Azure a ese límite, en todas sus formas. Parte de eso es la compatibilidad con dispositivos y contenedores de Linux como parte de Azure IoT Edge.

Existe una gran cantidad de código de borde basado en Linux, herramientas para procesar y administrar sus datos, por lo que tiene sentido reutilizarlo en su propio hardware. Microsoft ha facilitado el trabajo con código de Windows y Linux en su hardware, con contenedores como modelo de implementación clave. Sin embargo, hay un problema: su subsistema de Windows para Linux no está diseñado para usarse en aplicaciones que deben ejecutarse durante meses o incluso años.

Ahora se lanzó una alternativa que está destinada precisamente a ese propósito: EFLOW.

VER: Una guía para el índice de código abierto y la lista de verificación de proyectos de GitHub (TechRepublic Premium)

Entendiendo EFLOW

EFLOW es Azure IoT’s Edge para Linux en Windows. Al igual que WSL, se basa en conceptos que Docker introdujo con sus Contenedores de Linux en Windows, con su kernel y espacio de usuario mínimos LinuxKit. Aquí, sin embargo, EFLOW utiliza la distribución de Linux CBL-Mariner de Microsoft, una herramienta cada vez más importante para Microsoft. El «CBL» en CBL-Mariner significa Common Base Linux, y es el Linux estándar de Microsoft para sus propias aplicaciones, que se utiliza como host de contenedor para los contenedores de Azure Linux, además de alojar las herramientas utilizadas para entregar aplicaciones de gráficos Linux en WSLg. EFLOW se basa en él con el motor moby de Docker para alojar y ejecutar contenedores de aplicaciones.

Como resultado, existen similitudes entre EFLOW y WSL, pero las dos implementaciones están diseñadas para casos de uso muy diferentes y modos de implementación y operación muy diferentes. Quizás sea mejor pensar en WSL como el lugar donde se crea y prueba el código de Linux (además de ejecutar aplicaciones de usuario), mientras que EFLOW es un destino de implementación específico para los módulos de Azure IoT Edge que se ejecutan en contenedores. Es en gran medida una plataforma de producción, con lo que Microsoft llama un «Linux curado» diseñado para código que se ejecuta durante meses o incluso años.

Imagen: Microsoft

Con los dos enfoques de Windows Linux que comparten un enfoque común, puede usar WSL como su entorno de desarrollo, trabajando con herramientas de desarrollo familiares de Windows mediante la comunicación remota de Visual Studio. Una vez que su código esté listo para usar, todo lo que necesita hacer es empaquetarlo en un contenedor de Azure IoT Edge e implementarlo en EFLOW.

Configuración de EFLOW

EFLOW está diseñado para ejecutarse en un subconjunto de entornos de Windows, compatible con Windows 10 y 11 Pro y Enterprise, así como con IoT Enterprise y las compilaciones de Windows Server actualmente compatibles. Deberá habilitar Hyper-V antes de cualquier implementación, y si está ejecutando una imagen de máquina virtual en una plataforma como Azure Stack HCI, asegúrese de que admita la virtualización anidada.

Los dispositivos deben registrarse en Azure IoT Hub. Esto maneja la implementación de contenedores, así como la instalación de EFLOW PowerShell. Cada dispositivo necesita un ID único, y puede administrarlo a través de la CLI de Azure o el Portal de Azure.

EFLOW se implementa y administra a través de PowerShell. Deberá usar el módulo Azure EFLOW PowerShell para administrar el entorno EFLOW una vez que lo haya instalado. Microsoft proporciona un conjunto de comandos de PowerShell para instalar el MSI, con opciones para personalizar la instalación y las ubicaciones del disco virtual. Es posible que trabajar con la línea de comandos no funcione para todos, por lo que puede usar una extensión de vista previa para el Centro de administración de Windows, que funciona con dispositivos administrados tanto locales como remotos.

VER: Principales comandos de ejecución de Windows 10 (PDF gratuito) (TechRepublic)

Con el MSI instalado, los módulos de PowerShell ahora están listos para su uso, así que use el comando Deploy-Eflow para crear su entorno, configurando la memoria y el tamaño del disco. Si ha utilizado PowerShell para implementar una máquina virtual Hyper-V, este enfoque le resultará familiar, ya que configura CPU, memoria, almacenamiento y redes. Incluso puede configurar la compatibilidad con GPU, lo que simplifica el uso de EFLOW para alojar contenedores de aprendizaje automático, ya que pueden aprovechar su compatibilidad con GPGPU para alimentar motores de inferencia. Nuevamente, existe una opción alternativa de usar WAC para configurar e implementar EFLOW, eligiendo el hardware de destino y definiendo las configuraciones, antes de implementar y configurar.

Ejecutando EFLOW

Una vez instalado, puede configurar la red virtual utilizada por EFLOW. Si bien la red predeterminada y el conmutador virtual son lo suficientemente buenos para una sola aplicación, los entornos de instalación más complejos donde EFLOW y otras máquinas virtuales y contenedores comparten recursos requerirán redes y conmutadores separados para garantizar el aislamiento de la aplicación. Una vez que tenga una red, puede crear un punto final de red para EFLOW con una dirección IP estática o dinámica.

Con EFLOW en funcionamiento, puede utilizar otros scripts de EFLOW PowerShell como parte de un entorno de gestión. Un comando útil recopila lotes y los agrupa como un archivo zip, listo para enviar a un servidor de análisis de registros central, mientras que otros informan sobre el estado actual de las máquinas virtuales y de las redes virtuales. Luego, deberá configurar cadenas de conexión para completar la vinculación de su instancia EFLOW a su nube Azure IoT Hub.

El entorno EFLOW también se puede administrar mediante SSH, conectándose solo a un cliente SSH que se ejecuta en PowerShell en la máquina host. Esto le permite iniciar sesión en un entorno en ejecución para asegurarse de que esté configurado correctamente y de que el entorno de host de CBL-Mariner se esté ejecutando. Necesita una conexión directa al servidor host; no puede conectarse a través de PowerShell remoto o el Centro de administración de Windows.

Ahora está listo para crear e implementar sus aplicaciones de IoT Edge en EFLOW, enviando contenedores desde Azure IoT Hub. Microsoft proporciona un repositorio de GitHub con código de muestra que simplifica la creación de sus primeras aplicaciones Edge. Vale la pena dedicar tiempo a estos, ya que muestran cómo hacer cosas como ejecutar aplicaciones de aprendizaje automático alojadas en el borde. El código se implementa desde Azure y los contenedores se tratan como módulos almacenados en un registro de contenedores.

El código en sí se puede desarrollar en cualquier entorno Linux y, como EFLOW y WSL comparten muchas características comunes, es una opción para el diseño y la prueba. Vale la pena usar una distribución con más funciones como Ubuntu para construir y probar contenedores, antes de ejecutar su código en un entorno EFLOW local y publicarlo en su registro privado.

EFLOW le permite utilizar hardware de borde de Windows existente para aplicaciones de borde de Linux, que se ejecuta junto con el resto de su código. Con Windows IoT que ofrece ciclos de soporte largos junto con EFLOW, es una buena manera de construir sistemas y dispositivos híbridos que combinan y combinan lo mejor de las dos plataformas diferentes, desde aplicaciones de control hasta aprendizaje automático de borde a gran escala.

El gran valor para cualquiera que use EFLOW es, por supuesto, el soporte. Es parte de la plataforma Windows IoT y, por lo tanto, obtiene el ciclo de vida completo de soporte de Windows IoT. Eso es más de lo que obtendrá con la mayoría de las distribuciones de Linux de soporte a largo plazo, lo que lo hace atractivo para cualquiera que necesite ejecutar código Linux en un entorno similar a un dispositivo industrial.

Ver también