Automatización sin servidor con PowerShell en versión preliminar en Azure Functions

Publicado el 29 abril, 2019

Principal Program Manager, Azure Functions

A medida que compañías de todos los tamaños trasladan sus recursos y cargas de trabajo a la nube, hay una clara necesidad de proporcionar formas más eficaces de administrar, gobernar y automatizar sus recursos en la nube. Estos escenarios de automatización requieren lógica personalizada, que se expresa de manera excepcional en PowerShell. Normalmente, se ejecutan también según una programación o cuando tiene lugar un evento, como una alerta sobre una aplicación, la creación de un recurso nuevo o una aprobación en un sistema externo. 

Azure Functions es perfecto para solucionar estos escenarios, ya que proporciona un modelo de desarrollo de aplicaciones basado en desencadenadores y enlaces para lograr un desarrollo agilizado y hospedaje sin servidor de aplicaciones. La compatibilidad de Functions con PowerShell ha sido una característica muy solicitada por nuestros clientes, debido a su funcionalidad basada en eventos.

Hoy nos complace anunciar que hemos incorporado las ventajas de este modelo a la automatización de tareas operativas en Azure y en sistemas locales con la versión preliminar de la funcionalidad de PowerShell en Azure Functions.

Compañías de todo el mundo han utilizando PowerShell durante años para automatizar los recursos de su organización en la nube y en el entorno local. La mayoría de estos escenarios se basan en eventos que tienen lugar en la infraestructura o la aplicación y que requieren acción inmediata para cumplir los acuerdos de nivel de servicio y el tiempo de recuperación.

Con el lanzamiento de la funcionalidad de PowerShell en Azure Functions, ya se pueden automatizar estas tareas operativas y aprovechar la integración nativa en Azure para modernizar la entrega y el mantenimiento de los servicios.

La funcionalidad de PowerShell en Azure Functions se basa en la versión 2.x del entorno de ejecución y utiliza PowerShell Core 6, de modo que puede desarrollar la automatización en Windows, macOS y Linux. También se integra de forma nativa con Azure Application Insights para ofrecer visibilidad total sobre la ejecución de cada función. Antes, Azure Functions incluía funcionalidad de PowerShell experimental en la versión 1.x. y se recomienda encarecidamente que los clientes migren sus funciones de PowerShell de esta versión al último entorno de ejecución.

Guía de inicio rápido de Azure Functions para PowerShell

PowerShell en Azure Functions tiene todas las ventajas de otros lenguajes, por ejemplo, las siguientes:

  • Enlaces nativos para responder a alertas de supervisión de Azure, cambios en recursos a través de desencadenadores de Event Grid, HTTP o Timer, etc.
  • Integración con el portal y Visual Studio Code para crear y probar los scripts.
  • Seguridad integrada para proteger funciones desencadenadas por HTTP.
  • Compatibilidad con conexiones híbridas y redes virtuales para facilitar la administración de entornos híbridos.
  • Ejecución en un entorno local aislado.

Además, las funciones escritas con PowerShell tienen las siguientes características para facilitar la administración de los recursos de Azure mediante automatización.

Administración automática de módulos de Azure

Los módulos de Azure están disponibles de forma nativa para sus scripts, de modo que puede administrar los servicios disponibles en Azure sin tener que incluir estos módulos en cada función que cree. El servicio instalará automáticamente las actualizaciones críticas y de seguridad en estos módulos Az cuando se publiquen versiones secundarias.

Para habilitar esta característica, puede usar el archivo host.json, donde debe establecer “Enabled” en true para managedDependency y actualizar Requirements.psd1 para que incluya Az. Estos valores se establecen automáticamente cuando se crea una nueva aplicación de función con PowerShell.

host.json
{
    “version”: “2.0”,
    “managedDependency”: {
       “Enabled”: “true”
    }
}

Requirements.psd1
@{
    Az = ‘1.*’
}

Autenticación en los servicios de Azure

Cuando se habilita una identidad administrada para la aplicación de función, el host de PowerShell se puede autenticar automáticamente usando esta identidad y, de este modo, se concede permiso a las funciones para llevar a cabo acciones en aquellos servicios para los que se haya concedido acceso a la identidad administrada. El archivo profile.ps1 se procesa cuando se inicia una aplicación de función y permite que se ejecuten los comandos habituales. De forma predeterminada, si la identidad administrada está habilitada, la aplicación de función se autentica con Connect-AzAccount -Identity.

Aplicación de función que se autentica con Connect-AzAccount -Identity.

Escenarios de automatización habituales en Azure

PowerShell es un gran lenguaje para tareas de automatización y, con la disponibilidad en Azure Functions, los clientes ahora pueden crear sin problemas acciones basadas en eventos en todos los servicios y aplicaciones que se ejecutan en Azure. Los siguientes son algunos escenarios comunes:

  • Integración con Azure Monitor para procesar alertas generadas por los servicios de Azure.
  • Reaccionar a eventos de Azure capturados por Event Grid y aplicar requisitos operativos a los recursos.
  • Aprovechar Logic Apps para conectarse a sistemas externos, como los de administración de servicios de TI, DevOps o sistemas de supervisión mientras se procesa la carga útil con una función de PowerShell.
  • Realizar tareas operativas programadas en máquinas virtuales, SQL Server, Web Apps y otros recursos de Azure.

Pasos siguientes

La funcionalidad de PowerShell en Azure Functions está disponible actualmente en versión preliminar. Eche un vistazo a los siguientes recursos y pruébela:

  1. Encontrará más información sobre el uso de PowerShell en Azure Functions en la documentación, que también incluye guías de inicio rápido y ejemplos comunes que le ayudarán a comenzar.
  2. Regístrese para obtener una cuenta gratuita de Azure si no tiene una aún y cree su primera función con PowerShell.
  3. Puede ponerse en contacto con el equipo de Azure Functions en Twitter y en GitHub. Si desea ver comentarios específicos sobre el lenguaje PowerShell, consulte el repositorio de Azure Functions en GitHub.
  4. También supervisamos StackOverflow y UserVoice, donde puede formular preguntas o aportar sugerencias. Esperamos sus noticias.
  5. Encontrará más información acerca de la automatización y PowerShell en Functions en Azure Friday y Microsoft Mechanics.