Azure Automation pour les automatiser tous !

 

Azure Automation Késako ?

Si vous devez effectuer une tâche manuelle de manière répétée alors Azure Automation est là pour vous ! Ce service vous permettra d’automatiser les tâches répétitives, manuelles, de longues durée et susceptibles d’engendrer des erreurs que ce soit dans l’environnement cloud Microsoft ou au sein de votre environnement local.

Concrètement qu’est-ce que c’est ? On peut assimiler Azure Automation à un ordonnanceur de script (appelés Runbooks), ces Runbooks exécutant eux même un ensemble de tâches comme l’arrêt d’une VM, la création d’un compte utilisateur, l’envois de mail et autres…

Les Runbooks à la base reposent sur PowerShell WorkFlow mais il est désormais possible d’intégrer directement du code PowerShell. Pour les personnes ne se sentant pas à l’aise en PowerShell il également possible de créer des runbooks en mode graphique.

blog ai3 2016-07-18_22h43_48 Azure Automation pour les automatiser tous !

Afin de ne pas réinventer la roue il est également possible de trouver son bonheur auprès de la communauté puisqu’une galerie est directement accessible via le portail Azure.

blog ai3 2016-07-18_17h03_04 Azure Automation pour les automatiser tous !

Les assets

Les assets ou ressources Automation vous permettent d’enregistrer un ensemble d’éléments réutilisables au sein de vos Runbooks.

Ainsi nous disposons des éléments suivants :

  • Certificats
  • Connexions
  • Informations d’identification
  • Modules
  • Planifications
  • Variables

 

Certificats

Les certificats sont stockés de manière sécurisée et permettrons une authentification à tous types de services utilisant cette méthode d’authentification.

blog ai3 2016-07-19_00h12_11 Azure Automation pour les automatiser tous !

Connexions

Une connexion contient les informations nécessaires afin de se connecter à un service tiers (SharePoint Online) ou intégré à Azure.

Il est possible d’enregistrer des credentials, url et autres…

blog ai3 2016-07-19_00h18_54 Azure Automation pour les automatiser tous !

Informations d’identification

Une information d’identification contient des informations d’authentification au format PSCredential (pour rappel les Runbooks se basent sur du PowerShell)

blog ai3 2016-07-19_00h21_35 Azure Automation pour les automatiser tous !

Modules

Il est possible d’intégrer des modules PowerShell supplémentaires au sein de vos Runbooks, ces modules vous permettent d’étendre vos Runbooks aux technologies tierces à Azure (Office 365, Active Directory…)

blog ai3 2016-07-19_09h38_49 Azure Automation pour les automatiser tous !

Planifications

Les planifications permettent d’exécuter de manière automatisée les Runbooks selon vos propres définitions (Quotidienne, une seule fois, à des heures programmées…).

blog ai3 2016-07-19_09h45_19 Azure Automation pour les automatiser tous !

Variables

Les variables vous permettent d’enregistrer des valeurs sous forme de chaîne, d’entier, de booléen, de date ou de tableau.

Ces variables peuvent être créées via le portail Azure ou au sein d’un Runbook ce qui permet l’échange de données entre différents Runbooks.

Une variable peut être stockée de manière chiffrée.

blog ai3 2016-07-19_10h02_48 Azure Automation pour les automatiser tous !

Les Webhooks

Vous l’aurez compris il est donc possible d’exécuter un Runbook de manière automatisée via les planifications, automatisé certes puisque vous définissez une heure mais qu’en est-il si vous souhaitez exécuter un Runbook au déclenchement d’une action ou via l’exécution d’un process tiers à Azure ?

C’est là qu’intervient le Webhook !

Un Webhook n’est ni plus ni moins qu’une URL qui vous est communiquée lors de sa création, via une simple requête POST HTTP vous serez capable de démarrer le Runbook associé à ce Webhook.

Ainsi pas besoin de développer des solutions complexes via les API Azure ou autres puisque les Webhooks sont déjà intégrés à des services tiers tels que GitHub, Visual Studio Team Services. Il est également possible d’intégrer l’appel de Webhook via un Workflow SharePoint et bien d’autres encore…

blog ai3 Webhook Azure Automation pour les automatiser tous !

Lors de la création d’un Webhook vous aurez à définir les paramètres suivants :

  • Nom : nommage du Webhook
  • Date d’expiration : vous pouvez spécifier une date d’expiration à partir de laquelle le Webhook ne sera plus valable. Cette date ne sera plus modifiable après création, il vous faudra alors recréer un second Webhook et mettre à jour vos clients.
  • Activé : vous pouvez désactiver un Webhook à tout moment et le réactiver ultérieurement.

Lors de sa création une URL vous sera communiquée, il ne vous sera plus possible de récupérer cette URL une fois le Webhook créé puisque celle-ci contient un jeton de sécurité et est donc considérée comme un mot de passe.

blog ai3 2016-07-19_10h27_45 Azure Automation pour les automatiser tous !

Exécuter un Runbook c’est bien, exécuter un Runbook en lui passant des paramètres c’est encore mieux ! Voilà pourquoi il est possible d’inclure les valeurs des paramètres d’un Runbook dans l’appel à un Webhook via un paramètre unique appelé $WebhookData, ce paramètre est de type Object. Cet objet contiendra les données que le client inclut dans la requête POST HTTP.

blog ai3 Webhook2 Azure Automation pour les automatiser tous !

Puisqu’un exemple vaut mieux qu’un long discours nous allons créer notre premier Runbook avec paramètres exécuté via l’appel à un Webhook !

Pour ce faire, nous allons créer un nouveau Runbook de type PowerShell Workflow :

blog ai3 2016-07-19_11h39_40 Azure Automation pour les automatiser tous !

Une fois le Runbook créé, le mode édition s’ouvre automatiquement, entrez le code PowerShell suivant :

blog ai3 2016-07-19_11h47_38 Azure Automation pour les automatiser tous !

Etant donné qu’un Webhook ne peut être créé et associé à un Runbook que lorsque celui-ci est publié nous allons sauvegarder et publier notre Runbook de la manière suivante :

blog ai3 2016-07-19_11h51_27 Azure Automation pour les automatiser tous !

Une fois enregistré nous allons pouvoir créer un Webhook :

blog ai3 2016-07-19_11h53_01 Azure Automation pour les automatiser tous !

blog ai3 2016-07-19_11h54_32 Azure Automation pour les automatiser tous !

Nous allons créer un webhook nommé « Test-001 », par défaut la date d’expiration est d’un an.

Copiez précieusement l’URL qui vous est fournie puisque celle-ci ne sera plus accessible une fois le Webhook créé.

blog ai3 2016-07-19_11h55_54 Azure Automation pour les automatiser tous !

Nous laisserons les paramètres par défaut :

blog ai3 2016-07-19_11h57_23 Azure Automation pour les automatiser tous !

Voilà vous venez de créer votre premier Webhook !

blog ai3 2016-07-19_11h57_51 Azure Automation pour les automatiser tous !

Pour rappel il est possible de faire appel à un Webhook de plusieurs manières. Github intègre l’appel à un Webhook tout comme Visual Studio Team Services.

blog ai3 2016-07-19_13h37_54 Azure Automation pour les automatiser tous !

Il est également possible d’exécuter l’appel à un Webhook via le déclenchement d’une alerte sur Azure :

blog ai3 2016-07-19_13h39_59 Azure Automation pour les automatiser tous !

Dans cette démo nous allons tester l’appel de ce Webhook via quelques lignes de scripts PowerShell :

Avant d’exécuter ce script pensez à modifier la variable $Uri par l’Uri obtenu à la création de votre Webhook !

 

Une fois le script exécuté nous allons pouvoir vérifier que le JobID affiché correspond bien au Job qui a déclenché le démarrage de notre Runbook.

Pour ce faire nous allons nous rendre sur notre Runbook puis sur les Jobs :

blog ai3 2016-07-19_13h49_01 Azure Automation pour les automatiser tous !

Sélectionner le Job :

blog ai3 2016-07-19_13h50_02 Azure Automation pour les automatiser tous !

Puis vérifier le Job ID :

blog ai3 2016-07-19_13h50_42 Azure Automation pour les automatiser tous !

En effet pas de miracle c’est bien l’appel via votre Webhook qui a déclenché l’exécution de votre Runbook !

Si vous avez encore des doutes, libre à vous de vérifier la sortie de votre Runbook, celle-ci comportera les propriétés que vous venez de spécifier :

blog ai3 2016-07-19_13h58_01 Azure Automation pour les automatiser tous !

Libre à vous désormais de trouver le meilleur domaine d’application de cette fonctionnalité, sachez que les possibilités sont infinies !

Il est également possible d’appeler un Webhook au sein d’un Workflow SharePoint :

blog ai3 2016-07-19_13h55_43 Azure Automation pour les automatiser tous !

Azure mais pas que !

Exécuter des Runbooks sur Azure c’est bien, pouvoir exécuter des Runbooks sur Azure à destination de services OnPrem c’est encore mieux et c’est là qu’intervient la notion de Runbook Worker hybride.

Par défaut l’exécution des Runbooks se fait au sein d’Azure et ceux-ci sont incapable d’accéder à vos ressources locales. Cette fonctionnalité vous permet ainsi d’exécuter des Runbooks sur des serveurs au sein de votre réseau local. Les Runbooks sont toujours créés, gérés et stockés au sein d’Azure mais ils sont ensuite remis à un ou plusieurs serveurs locaux permettant leur exécution au sein de votre réseau local.

blog ai3 Hybrid Azure Automation pour les automatiser tous !

Un ou plusieurs serveurs locaux pourront jouer le rôle d’Hybrid Worker, chaque Worker nécessite l’installation du Microsoft Management Agent ainsi qu’une connexion à Microsoft Operations Management Suite. Nous ne développerons pas cette installation au sein de cet article puisque la documentation officelle est très complète.

Une fois votre Hybrid Worker défini il vous sera possible de déclarer l’exécution de vos Runbooks non pas sur Azure mais à destination de votre réseau local :

blog ai3 2016-07-19_14h38_32 Azure Automation pour les automatiser tous !

C’est là qu’intervient l’intégration des modules additionnels à ceux intégrés de base sur Azure puisque vous pourrez intégrer vos propres modules afin d’inter-réagir avec vos environnements locaux de manière totalement automatisés et de manière centralisées.

 

On fait quoi maintenant ?

Libre à vous d’imaginer les domaines d’applications qui vous seront propres mais à la vue des larges possibilités d’ouvertures que nous venons d’exposer voici quelques exemples :

  • Création automatisée de comptes Active Directory depuis une liste SharePoint
  • Création de VMs via template JSON enregistrés sur un repo Github
  • Suppression de fichiers temporaires au sein d’une VM via déclenchement d’une alerte Azure
  • Le classique Start / Stop automatique des VMs de dev/tests afin de faire des économies, pour pimenter le tout on peut imaginer l’arrêt auto via la présence d’un Tag définissant la famille de VM (en l’occurrence Dev/Tests)
  • L’extraction de la dernière version de vos modules PowerShell hébergés sur votre repo Github via un appel Webhook dès lors qu’un Push est fait sur votre repository, auquel cas vous serez assuré de la présence de la dernière version de vos modules sur l’ensemble de vos serveurs

Pour le reste c’est à vous de jouer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.