Preparación del entorno de desarrollo y prueba para IoT EdgePrepare your development and test environment for IoT Edge

Azure IoT Edge traslada la lógica de negocios existente a los dispositivos que funcionan en el perímetro.Azure IoT Edge moves your existing business logic to devices operating at the edge. Con el fin de preparar las aplicaciones y cargas de trabajo para que se ejecuten como módulos IoT Edge, tendrá que compilarlas como contenedores.To prepare your applications and workloads to run as IoT Edge modules, you need to build them as containers. En este artículo se proporcionan instrucciones sobre cómo configurar el entorno de desarrollo, para poder crear correctamente una solución de IoT Edge.This article provides guidance around how to configure your development environment so that you can successfully create an IoT Edge solution. Una vez configurado el entorno de desarrollo, puede aprender cómo desarrollar módulos IoT Edge propios.Once you have your development environment set up, then you can learn how to Develop your own IoT Edge modules.

En cualquier solución de IoT Edge, hay que tener en cuenta al menos dos equipos.In any IoT Edge solution, there are at least two machines to consider. Uno es el propio dispositivo (o dispositivos) de IoT Edge que ejecuta el módulo IoT Edge.One is the IoT Edge device (or devices) itself, which runs the IoT Edge module. El otro es el equipo de desarrollo que se usa para compilar, probar e implementar los módulos.The other is the development machine that you use to build, test, and deploy modules. Este artículo se centra principalmente en el equipo de desarrollo.This article focuses primarily on the development machine. Con fines de prueba, los dos equipos pueden ser el mismo.For testing purposes, the two machines can be the same. Puede ejecutar IoT Edge en el equipo de desarrollo e implementar módulos en él.You can run IoT Edge on your development machine and deploy modules to it.

Sistema operativoOperating system

Azure IoT Edge se ejecuta en un conjunto específico de sistemas operativos compatibles.Azure IoT Edge runs on a specific set of supported operating systems. Para desarrollar para IoT Edge, puede usar la mayoría de los sistemas operativos en los que se puede ejecutar un motor de contenedor.For developing for IoT Edge, you can use most operating systems that can run a container engine. El motor de contenedor es un requisito en el equipo de desarrollo para compilar los módulos como contenedores e insertarlos en un registro de contenedor.The container engine is a requirement on the development machine to build your modules as containers and push them to a container registry.

Si el equipo de desarrollo no puede ejecutar Azure IoT Edge, continúe en este artículo para obtener información sobre las herramientas de prueba que le ayudarán a realizar pruebas y depurar de forma local.If your development machine can't run Azure IoT Edge, continue in this article to learn about testing tools that help you test and debug locally.

No es necesario que el sistema operativo del equipo de desarrollo coincida con el del dispositivo IoT Edge.The operating system of your development machine doesn't have to match the operating system of your IoT Edge device. Pero el sistema operativo del contenedor debe ser coherente entre el equipo de desarrollo y el dispositivo IoT Edge.However, the container operating system must be consistent between development machine and IoT Edge device. Por ejemplo, puede desarrollar módulos en un equipo Windows e implementarlos en un dispositivo de Linux.For example, you can develop modules on a Windows machine and deploy them to a Linux device. El equipo con Windows debe ejecutar contenedores de Linux para compilar los módulos para el dispositivo de Linux.The Windows machine needs to run Linux containers to build the modules for the Linux device.

Motor de contenedorContainer engine

El concepto central de IoT Edge es que se puede implementar de forma remota la lógica de negocios y en la nube en los dispositivos si se empaqueta en contenedores.The central concept of IoT Edge is that you can remotely deploy your business and cloud logic to devices by packaging it into containers. Para crear contenedores, necesita un motor de contenedor en el equipo de desarrollo.To build containers, you need a container engine on your development machine.

El único motor de contenedor compatible para los dispositivos IoT Edge en producción es Moby.The only supported container engine for IoT Edge devices in production is Moby. Pero cualquier motor de contenedor compatible con la iniciativa Open Container, como Docker, es capaz de crear imágenes de módulos IoT Edge.However, any container engine compatible with the Open Container Initiative, like Docker, is capable of building IoT Edge module images.

Herramientas de desarrolloDevelopment tools

Visual Studio y Visual Studio Code tienen extensiones de complemento para ayudar a desarrollar soluciones de IoT Edge.Both Visual Studio and Visual Studio Code have add-on extensions to help develop IoT Edge solutions. Estas extensiones proporcionan plantillas específicas del idioma para ayudar a crear e implementar nuevos escenarios de IoT Edge.These extensions provide language-specific templates to help create and deploy new IoT Edge scenarios. Las extensiones de Azure IoT Edge para Visual Studio y Visual Studio Code ayudan a crear el código, compilar, implementar y depurar las soluciones de IoT Edge.The Azure IoT Edge extensions for Visual Studio and Visual Studio Code help you code, build, deploy, and debug your IoT Edge solutions. Puede crear una solución completa de IoT Edge que contenga varios módulos, y las extensiones actualizan de forma automática una plantilla de manifiesto de implementación con cada nuevo módulo que se agregue.You can create an entire IoT Edge solution that contains multiple modules, and the extensions automatically update a deployment manifest template with each new module addition. Con las extensiones, también puede administrar los dispositivos IoT desde dentro de Visual Studio o Visual Studio Code.With the extensions, you can also manage your IoT devices from within Visual Studio or Visual Studio Code. Implemente los módulos en un dispositivo, supervise el estado y vea los mensajes cuando llegan a IoT Hub.Deploy modules to a device, monitor the status, and view messages as they arrive at IoT Hub. Las dos extensiones también usan la herramienta de desarrollo de IoT EdgeHub para habilitar la ejecución local y la depuración de los módulos en el equipo de desarrollo.Both extensions use the IoT EdgeHub dev tool to enable local running and debugging of modules on your development machine as well.

Si prefiere desarrollar con otros editores o desde la CLI, la herramienta de desarrollo de Azure IoT Edge proporciona comandos para que pueda desarrollar y probar desde la línea de comandos.If you prefer to develop with other editors or from the CLI, the Azure IoT Edge dev tool provides commands so that you can develop and test from the command line. Puede crear escenarios de IoT Edge, compilar imágenes de módulos, ejecutar módulos en un simulador y supervisar los mensajes enviados a IoT Hub.You can create new IoT Edge scenarios, build module images, run modules in a simulator, and monitor messages sent to IoT Hub.

Extensión de Visual Studio CodeVisual Studio Code extension

La extensión de Azure IoT Edge para Visual Studio Code proporciona plantillas de módulos IoT Edge basadas en lenguajes de programación como C, C#, Java, Node.js y Python, así como Azure Functions en C#.The Azure IoT Edge extension for Visual Studio Code provides IoT Edge module templates built on programming languages including C, C#, Java, Node.js, and Python as well as Azure functions in C#.

Para obtener más información y descargar, consulte Herramientas de Azure IoT para Visual Studio Code.For more information and to download, see Azure IoT Tools for Visual Studio Code.

Además de las extensiones de IoT Edge, le resultará útil instalar extensiones adicionales para el desarrollo.In addition to the IoT Edge extensions, you may find it helpful to install additional extensions for developing. Por ejemplo, puede usar compatibilidad con Docker para Visual Studio Code para administrar imágenes, contenedores y registros.For example, you can use Docker Support for Visual Studio Code to manage your images, containers, and registries. Además, todos los principales lenguajes compatibles tienen extensiones para Visual Studio Code que pueden ayudar cuando desarrolle módulos.Additionally, all the major supported languages have extensions for Visual Studio Code that can help when you're developing modules.

PrerequisitesPrerequisites

Las plantillas de módulo para algunos lenguajes y servicios tienen requisitos previos que son necesarios para crear las carpetas de proyecto en el equipo de desarrollo con Visual Studio Code.The module templates for some languages and services have prerequisites that are necessary to build the project folders on your development machine with Visual Studio Code.

Plantilla de móduloModule template Requisito previoPrerequisite
Azure FunctionsAzure Functions SDK de .NET Core 2.1..NET Core 2.1 SDK
CC GitGit
C#C# SDK de .NET Core 2.1..NET Core 2.1 SDK
JavaJava
Node.jsNode.js
PythonPython

Extensión de Visual Studio 2017/2019Visual Studio 2017/2019 extension

Las herramientas de Azure IoT Edge para Visual Studio proporcionan una plantilla de módulo IoT Edge basada en C# y C.The Azure IoT Edge tools for Visual Studio provide an IoT Edge module template built on C# and C.

Para obtener más información y descargar, consulte Herramientas de Azure IoT Edge para Visual Studio 2017 o Herramientas de Azure IoT Edge para Visual Studio 2019.For more information and to download, see Azure IoT Edge Tools for Visual Studio 2017 or Azure IoT Edge Tools for Visual Studio 2019.

Herramienta de desarrollo de IoT EdgeIoT Edge dev tool

La herramienta de desarrollo de Azure IoT Edge simplifica el desarrollo de IoT Edge con funciones de línea de comandos.The Azure IoT Edge dev tool simplifies IoT Edge development with command-line abilities. Esta herramienta proporciona comandos de la CLI para desarrollar, depurar y probar módulos.This tool provides CLI commands to develop, debug, and test modules. La herramienta de desarrollo de IoT Edge funciona con el sistema de desarrollo, con independencia de que haya instalado manualmente las dependencias en el equipo o use el contenedor de desarrollo de IoT Edge.The IoT Edge dev tool works with your development system, whether you've manually installed the dependencies on your machine or are using the IoT Edge dev container.

Para obtener más información y para comenzar, vea la wiki de la herramienta de desarrollo de IoT Edge.For more information and to get started, see IoT Edge dev tool wiki.

Herramientas de pruebasTesting tools

Existen varias herramientas de pruebas para ayudar a simular dispositivos IoT Edge o depurar módulos de forma más eficaz.Several testing tools exist to help you simulate IoT Edge devices or debug modules more efficiently. En la tabla siguiente se muestra una comparación general entre las herramientas y, después, en las secciones individuales, se describe cada herramienta de forma más específica.The following table shows a high-level comparison between the tools, and then individual sections describe each tool more specifically.

El runtime de IoT Edge solo se admite para las implementaciones de producción, pero las herramientas siguientes permiten simular o crear fácilmente dispositivos IoT Edge para fines de prueba y desarrollo.Only the IoT Edge runtime is supported for production deployments, but the following tools allow you to simulate or easily create IoT Edge devices for development and testing purposes. Estas herramientas no son mutuamente excluyentes, pero pueden funcionar de forma conjunta para proporcionar una experiencia de desarrollo completa.These tools aren't mutually exclusive, but can work together for a complete development experience.

HerramientaTool También conocida comoAlso known as Plataformas compatiblesSupported platforms Más adecuado paraBest for
Herramienta de desarrollo de IoT EdgeHubIoT EdgeHub dev tool iotedgehubdeviotedgehubdev Windows, Linux, MacOSWindows, Linux, MacOS Simular un dispositivo para depurar módulos.Simulating a device to debug modules.
Contenedor de desarrollo de IoT EdgeIoT Edge dev container microsoft/iotedgedevmicrosoft/iotedgedev Windows, Linux, MacOSWindows, Linux, MacOS Desarrollar sin instalar dependencias.Developing without installing dependencies.
Runtime de IoT Edge en un contenedorIoT Edge runtime in a container iotedgeciotedgec Windows, Linux, MacOS, ARMWindows, Linux, MacOS, ARM Realizar pruebas en un dispositivo que no admita el runtime.Testing on a device that may not support the runtime.
Contenedor de dispositivos IoT EdgeIoT Edge device container toolboc/azure-iot-edge-device-containertoolboc/azure-iot-edge-device-container Windows, Linux, MacOS, ARMWindows, Linux, MacOS, ARM Probar un escenario con muchos dispositivos IoT Edge a escala.Testing a scenario with many IoT Edge devices at scale.

Herramienta de desarrollo de IoT EdgeHubIoT EdgeHub dev tool

La herramienta de desarrollo de Azure IoT EdgeHub proporciona una experiencia de desarrollo y depuración local.The Azure IoT EdgeHub dev tool provides a local development and debug experience. La herramienta ayuda a iniciar los módulos IoT Edge sin el runtime de IoT Edge para que pueda crear, desarrollar, probar, ejecutar y depurar módulos y soluciones de IoT Edge de forma local.The tool helps start IoT Edge modules without the IoT Edge runtime so that you can create, develop, test, run, and debug IoT Edge modules and solutions locally. Para realizar las pruebas, no es necesario insertar imágenes en un registro de contenedor e implementarlas en un dispositivo.You don't have to push images to a container registry and deploy them to a device for testing.

La herramienta de desarrollo IoT EdgeHub se ha diseñado para funcionar conjuntamente con las extensiones de Visual Studio y Visual Studio Code, así como con la herramienta de desarrollo de IoT Edge.The IoT EdgeHub dev tool was designed to work in tandem with the Visual Studio and Visual Studio Code extensions, as well as with the IoT Edge dev tool. Admite el desarrollo de bucle interno así como las pruebas de bucle externo, por lo que también se integra con las herramientas de DevOps.It supports inner loop development as well as outer loop testing, so integrates with the DevOps tools too.

Para obtener más información y para la instalación, vea Herramienta de desarrollo de Azure IoT EdgeHub.For more information and to install, see Azure IoT EdgeHub dev tool.

Contenedor de desarrollo de IoT EdgeIoT Edge dev container

El contenedor de desarrollo de Azure IoT Edge es un contenedor de Docker que tiene todas las dependencias que necesita para el desarrollo de IoT Edge.The Azure IoT Edge dev container is a Docker container that has all the dependencies that you need for IoT Edge development. Este contenedor facilita empezar a trabajar con cualquier lenguaje en el que quiera desarrollar, incluidos C#, Python, Node.js y Java.This container makes it easy to get started with whichever language you want to develop in, including C#, Python, Node.js, and Java. Todo lo que necesita instalar es un motor de contenedor, como Docker o Moby, para extraer el contenedor en el equipo de desarrollo.All you need to install is a container engine, like Docker or Moby, to pull the container to your development machine.

Para obtener más información, vea el artículo sobre el contenedor de desarrollo de Azure IoT Edge.For more information, see Azure IoT Edge dev container.

Runtime de IoT Edge en un contenedorIoT Edge runtime in a container

El runtime de IoT Edge en un contenedor proporciona un runtime completo que toma la cadena de conexión del dispositivo como una variable de entorno.The IoT Edge runtime in a container provides a complete runtime that takes your device connection string as an environment variable. Este contenedor permite probar módulos y escenarios de IoT Edge en un sistema que es posible que no admita el runtime de forma nativa, como MacOS.This container enables you to test IoT Edge modules and scenarios on a system that may not support the runtime natively, like MacOS. Todos los módulos que implemente se iniciarán fuera del contenedor del runtime.Any modules that you deploy will be started outside of the runtime container. Si quiere que el runtime y los módulos implementados existan dentro del mismo contenedor, considere en su lugar el contenedor de dispositivos de IoT Edge.If you want the runtime and any deployed modules to exist within the same container, consider the IoT Edge device container instead.

Para obtener más información, vea Running Azure IoT Edge in a container (Ejecución de Azure IoT Edge en un contenedor).For more information, see Running Azure IoT Edge in a container.

Contenedor de dispositivos IoT EdgeIoT Edge device container

El contenedor de dispositivos de IoT Edge es un dispositivo IoT Edge completo, listo para iniciarse en cualquier equipo con un motor de contenedor.The IoT Edge device container is a complete IoT Edge device, ready to be launched on any machine with a container engine. El contenedor de dispositivos incluye el runtime de IoT Edge y un motor de contenedor propio.The device container includes the IoT Edge runtime and a container engine itself. Cada instancia del contenedor es un dispositivo IoT Edge autoaprovisionado totalmente funcional.Each instance of the container is a fully functional self-provisioning IoT Edge device. El contenedor de dispositivos admite la depuración remota de los módulos, siempre y cuando haya una ruta de red para el módulo.The device container supports remote debugging of modules, as long as there is a network route to the module. El contenedor de dispositivos es adecuado para crear de forma rápida grandes cantidades de dispositivos IoT Edge para probar escenarios a escala o Azure Pipelines.The device container is good for quickly creating large numbers of IoT Edge devices to test at-scale scenarios or Azure Pipelines. También admite la implementación en Kubernetes a través de Helm.It also supports deployment to kubernetes via helm.

Para obtener más información, vea el artículo sobre el contenedor de dispositivos de Azure IoT Edge.For more information, see Azure IoT Edge device container.

Herramientas de DevOpsDevOps tools

Cuando esté listo para desarrollar soluciones a escala para escenarios de producción de gran tamaño, aproveche las ventajas de los principios modernos de DevOps incluida la automatización, la supervisión y los procesos de ingeniería de software simplificados.When you're ready to develop at-scale solutions for extensive production scenarios, take advantage of modern DevOps principles including automation, monitoring, and streamlined software engineering processes. IoT Edge tiene extensiones para admitir herramientas de DevOps, incluidos Azure DevOps, Azure DevOps Projects y Jenkins.IoT Edge has extensions to support DevOps tools including Azure DevOps, Azure DevOps Projects, and Jenkins. Si quiere personalizar una canalización existente o usar otra herramienta de DevOps como CircleCI o TravisCI, puede hacerlo con las características de la CLI que se incluyen en la herramienta de desarrollo de IoT Edge.If you want to customize an existing pipeline or use a different DevOps tool like CircleCI or TravisCI, you can do so with the CLI features included in the IoT Edge dev tool.

Para obtener más información, instrucciones y ejemplos, vea las páginas siguientes:For more information, guidance, and examples, see the following pages: