Automatisation serverless avec la préversion de PowerShell dans Azure Functions

Publié le 29 avril, 2019

Principal Program Manager, Azure Functions

Quelle que soit leur taille, toutes les entreprises transfèrent leurs ressources et leurs charges de travail dans le cloud, et il est évident qu’elles ont besoin de systèmes plus efficaces pour gérer, gouverner et automatiser leurs ressources cloud. Ces scénarios d’automatisation nécessitent une logique personnalisée, que PowerShell exprime le mieux. Ils sont aussi généralement exécutés en fonction d’un programme ou d’un événement, par exemple une alerte sur une application, la création d’une ressource ou en cas d’approbation sur un système externe. 

Azure Functions est la solution parfaite pour ces scénarios, car il propose un modèle de développement d’applications basé sur des déclencheurs et des liaisons qui permet d’accélérer le développement et l’hébergement serverless des applications. La prise en charge de PowerShell dans Azure Functions fait partie des demandes les plus fréquentes de nos clients, compte-tenu de ses capacités basées sur les événements.

Nous sommes donc heureux d’annoncer aujourd’hui que nous avons intégré les avantages de ce modèle à l’automatisation des tâches opérationnelles sur Azure et sur les systèmes locaux avec la préversion de la prise en charge de PowerShell dans Azure Functions.

De nombreuses entreprises partout dans le monde ont adopté PowerShell pour automatiser les ressources cloud et les ressources locales dans leur organisation, et ce depuis des années. La plupart de ces scénarios sont basés sur les événements qui se produisent sur l’infrastructure ou dans les applications et auxquels une réaction doit être immédiatement appliquée afin d’assurer la conformité avec les contrats de niveau de service et les objectifs de temps de récupération.

Avec la prise en charge de PowerShell dans Azure Functions, il est désormais possible d’automatiser ces tâches opérationnelles et de profiter de l’intégration native d’Azure pour moderniser la fourniture et la maintenance des services.

La prise en charge de PowerShell dans Azure Functions s’appuie sur le runtime 2.x et utilise PowerShell Core 6 pour que votre automatisation puisse être développée sur Windows, macOS et Linux. Elle s’intègre aussi de façon native à Azure Application Insights pour offrir une visibilité complète sur chaque exécution de fonction. Auparavant, Azure Functions comportait une prise en charge expérimentale de PowerShell dans la version 1.x et il est fortement conseillé aux clients de mettre à niveau leurs fonctions PowerShell 1.x vers la dernière version du runtime.

Démarrage rapide d’Azure Functions pour PowerShell

PowerShell dans Azure Functions présente tous les avantages des autres langages, dont les suivants :

  • Liaisons natives pour répondre aux alertes de surveillance Azure, changements de ressources via des déclencheurs Event Grid, HTTP ou Timer, etc.
  • Intégration du code du portail et de Portal Visual Studio Code pour la création et le test des scripts.
  • Sécurité intégrée pour protéger les fonctions déclenchées par HTTP.
  • Prise en charge des connexions hybrides et des réseaux virtuels pour la gestion des environnements hybrides.
  • Exécution dans un environnement local isolé.

En outre, les fonctions écrites avec PowerShell présentent les capacités suivantes, qui simplifient la gestion des ressources Azure via l’automatisation.

Gestion automatique des modules Azure

Les modules Azure sont disponibles de façon native pour vos scripts. Vous pouvez donc gérer les services disponibles dans Azure sans avoir à inclure ces modules dans chaque fonction créée. Les mises à jour critiques et les mises à jour de sécurité de ces modules Azure seront automatiquement mises à niveau dès que de nouvelles versions mineures seront publiées.

Vous pouvez activer cette fonctionnalité via le fichier host.json en attribuant la valeur True à « Enabled » pour managedDependency et en mettant à jour Requirements.psd1 pour qu’il inclue Azure. Ces paramètres sont automatiquement définis lorsque vous créez une nouvelle application de fonction avec PowerShell.

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

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

Authentification auprès des services Azure

Lorsque vous activez une identité managée pour l’application de fonction, l’hôte PowerShell peut automatiquement effectuer l’authentification avec cette identité, affectant ainsi aux fonctions les autorisations pour effectuer des actions sur les services auxquelles l’identité managée a accès. Le fichier profile.ps1 est traité lorsqu’une application de fonction est lancée et active des commandes standard communes à exécuter. Par défaut, si l’identité managée est activée, l’application de fonction s’authentifie avec Connect-AzAccount -Identity.

Authentification de l’application de fonction avec Connect-AzAccount -Identity.

Scénarios courants d’automatisation dans Azure

PowerShell est un très bon langage pour l’automatisation des tâches, et comme il est maintenant disponible dans Azure Functions, les clients peuvent en toute transparence créer des actions basées sur les événements sur tous les services et toutes les applications exécutées dans Azure. Voici quelques scénarios courants :

  • Integration à Azure Monitor pour traiter les alertes générées par les services Azure.
  • Réaction aux événements Azure capturés par Event Grid et application des exigences opérationnelles sur ces ressources.
  • Exploitation de Logic Apps pour la connexion aux systèmes externes comme la gestion des services informatiques, DevOps ou les systèmes de surveillance pendant le traitement de la charge utile avec une fonction PowerShell.
  • Traitement de tâches opérationnelles sur les machines virtuelles, sur SQL Server, sur les Web Apps et sur les autres ressources Azure.

Étapes suivantes

La prise en charge de PowerShell dans Azure Functions est actuellement disponible en préversion. Consultez les ressources suivantes et testez-le :

  1. Retrouvez plus d’informations sur l’utilisation de PowerShell dans Azure Functions dans la documentation, avec des démarrages rapides et des exemples courants.
  2. Si ce n’est pas déjà fait, ouvrez un compte Azure gratuit et créez votre première fonction avec PowerShell.
  3. Vous pouvez rejoindre l’équipe Azure Functions sur Twitter et sur GitHub. Pour fournir des commentaires sur le langage PowerShell, consultez le référentiel GitHub d’Azure Functions.
  4. Nous surveillons aussi activement Stack Overflow et UserVoice. N’hésitez donc pas à poser des questions ou à formuler des suggestions. Nous espérons recevoir bientôt de vos nouvelles.
  5. Plus d’informations sur l’automatisation et PowerShell dans Functions sur Azure Friday et Microsoft Mechanics.