Imagen: Shutterstock/TippaPatt

Microsoft ha dejado claro durante algún tiempo que el borde es tan importante para él como la nube, y el director ejecutivo Satya Nadella habla regularmente de "la nube inteligente y el borde inteligente". Una gran parte de su objetivo ha sido llevar a Azure a esta ventaja, en todas sus formas. Parte de eso es la compatibilidad con contenedores y dispositivos de Linux como parte de Azure IoT Edge.

Hay muchos códigos periféricos basados ​​en Linux, herramientas para procesar y administrar sus datos, por lo que tiene sentido reutilizarlos en su propio hardware. Microsoft ha facilitado el trabajo con código de Windows y Linux en su hardware, siendo los contenedores su modelo de implementación clave. Sin embargo, hay una trampa: su subsistema de Windows para Linux no está destinado a ser utilizado para aplicaciones que deben ejecutarse durante meses o incluso años.

Ahora ha lanzado una alternativa destinada a este fin: EFLOW.

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

Índice
  • Entendiendo el FLUJO DE EFECTOS
  • Implementación de EFLOW
  • Ejecutando FLUJO
  • Entendiendo el FLUJO DE EFECTOS

    EFLOW es Azure IoT Edge para Linux en Windows. Al igual que WSL, se basa en conceptos introducidos por Docker con sus contenedores de Linux en Windows, con su kernel mínimo y espacio de usuario LinuxKit. Aquí, sin embargo, EFLOW utiliza la distribución CBL-Mariner Linux 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, utilizado como host de contenedor para contenedores de Azure Linux, así como herramientas de alojamiento utilizadas para entregar aplicaciones gráficas de Linux en WSLg. EFLOW se basa en esto con el motor Moby de Docker para alojar y ejecutar contenedores de aplicaciones.

    Por lo tanto, 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 en el que se compila y prueba el código de Linux (así como también se ejecutan las aplicaciones de usuario), mientras que EFLOW es un objetivo 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 "Linux curado" para código que se ejecuta durante meses o incluso años.

    Imagen: Microsoft

    Con ambos enfoques de Windows Linux compartiendo un enfoque común, puede usar WSL como su entorno de desarrollo, trabajando con herramientas de desarrollo familiares de Windows usando Visual Studio Remoting. 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.

    Implementació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 versiones 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 sea compatible con la virtualización anidada.

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

    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 instale. Microsoft proporciona un conjunto de comandos de PowerShell para instalar el MSI, con opciones para personalizar la instalación y las ubicaciones de los discos virtuales. 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) (República Tecnológica)

    Una vez que se instala el MSI, los módulos de PowerShell ya están listos para usar, así que use el comando Deploy-Eflow para crear su entorno, configurar la memoria y el tamaño del disco. Si usó PowerShell para implementar una máquina virtual Hyper-V, debería encontrar este enfoque familiar, configurando 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 potenciar los motores de inferencia. Nuevamente, hay otra opción de usar WAC para configurar e implementar EFLOW, elegir el hardware de destino y establecer los parámetros, antes de la implementación y configuración.

    Ejecutando FLUJO

    Una vez instalado, puede configurar la red virtual utilizada por EFLOW. Aunque la red predeterminada y el conmutador virtual son suficientes 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 independientes para proporcionar aplicaciones de aislamiento. 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 usar otros scripts de PowerShell de EFLOW como parte de un entorno de administración. Un comando útil recopila lotes y los empaqueta como un archivo zip, listo para enviarse a un servidor central de análisis de registros, mientras que otros informan sobre el estado actual de las máquinas virtuales y las redes virtuales. Luego deberá configurar cadenas de conexión para completar la vinculación de su instancia EFLOW a su nube de 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 conectarse a un entorno en ejecución para asegurarse de que esté configurado correctamente y que el entorno del host CBL-Mariner se esté ejecutando. Necesita una conexión directa al servidor host; no puede conectarse a través de Remote PowerShell o Windows Admin Center.

    Ahora está listo para compilar e implementar sus aplicaciones de IoT Edge en EFLOW y enviarle contenedores desde Azure IoT Hub. Microsoft proporciona un repositorio de GitHub con código de muestra que facilita la creación de sus primeras aplicaciones Edge. Vale la pena pasar un tiempo con estos, ya que demuestran 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 contenedor.

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

    EFLOW le permite usar hardware perimetral de Windows existente para aplicaciones perimetrales de Linux, ejecutándose junto con el resto de su código. Dado que Windows IoT ofrece largos ciclos de soporte con EFLOW, es una excelente manera de crear sistemas y dispositivos híbridos que combinan y combinan lo mejor de dos plataformas diferentes, desde aplicaciones de control hasta aprendizaje automático 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, se beneficia del 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 soporte a largo plazo de Linux, lo que lo hace atractivo para cualquier persona que necesite ejecutar código de Linux en un entorno similar a un dispositivo industrial.