Microsoft Teams est un nouvel espace de travail collaboratif 100% Chat dans Office 365. Pour faire un pendant avec des produits plus connus, disons que cela s’apparente à un Slack d’entreprise, un RocketChat

Il y a plein d’usages intéressants de Microsoft Teams pour du travail collaboratif (cf. le site produit) mais comme j’ai plutôt une “casquette Ops” et Cloud Azure, j’ai regardé comment je pouvais utiliser Teams comme réceptacle d’informations pour mes déploiements dans Azure. Pour cela, j’ai utilisé les connecteurs Teams et un en particulier : le Webhook

L’objectif de cet article est de découvrir les Webhooks dans Microsoft Teams et de voir comment les utiliser pour envoyer des notifications depuis Azure ou des scripts PowerShell ou Bash.

 

Qu’est ce qu’un Webhook ?
Un webhook permet de notifier une application tierce qu’un événement a eu lieu. Quand un évènement se passe, on envoie la notification via une requête HTTP avec le verbe POST vers une URL donnée.

Dans les exemples d’usage qui vont suivre, les notifications seront envoyées au service Microsoft Teams. Il faut donc configurer Microsoft Teams comme réceptacle de ces notifications postées via des requêtes HTTP. On va donner créer et utiliser un incoming Webhook.

 

— Etape 1 — Configuration d’un incoming Webhook dans Microsoft Teams

Se connecter au portail Microsoft Teams : https://teams.microsoft.com/

Créer une Teams (ici : Stan Azure tenants)

Ajouter un Channel (ici Mes Notifications) dans une Team.

Cliquer sur puis Connectors

Cliquer sur le bouton Add pour la ligne Incoming Webhook

Donner un nom au Webhook (ex: DeploiementAzure). Il est possible de changer l’image associée à ce Webhook

Cliquer sur Create

Le Webhook est créé.

Copier l’URL générée qui a la forme suivante :
https://outlook.office.com/webhook/555aa7fc-ea71-4fb7-ae9e-755bba4d04ed@72f988bf-86f1-41af-91ab-2d7cd011db47/IncomingWebhook/b80180a720b64690bea9538963fa5ff8/51dab674-ad95-4f0a-8964-8bdefc25b6d9

Cliquer sur Done

Le Webhook est prêt à l’emploi 🙂

 

— Etape 2 — Configurer des alertes Azures pour notifier via les webhooks

Exemple 1 : VM Auto-shutdown

Dans Azure, il est possible de configurer une option d’arrêt planifié des machines virtuelles ( VM Auto-Shutdown) afin d’économiser les frais de Compute. J’utilise cette fonctionnalité pour toutes mes VM ne nécessitant pas un fonctionnement en permanence. Il est possible avec la fonction d’Auto-Shutdown de notifier l’arrêt dans 15 minutes de la VM. La notification peut être effectuée via un Webhook, il suffit donc de copier / coller l’URL créée précédemment lors de la création du Incoming Webhook dans Microsoft Teams.

Résultat 15 minutes avant l’arrêt d’une VM :

ici un message permettant en cliquant sur le lien d’annuler le processus d’arrêt planifié de la VM.

Exemple 2 – Alertes sur des métriques d’une VM (via Azure Monitor)

Par exemple envoyer une notification si le pourcentage de consommation CPU dépasse un seuil

Copier / coller ensuite l’URL du Webhook

 

— Etape 3 — utiliser les webhook dans des scripts PowerShell

Il est possible simplement de notifier dans Teams via Webhook depuis PowerShell

Pour récupérer le code, voir sur l’article blog de son créateur : https://blogs.technet.microsoft.com/stefan_stranger/2016/11/03/use-webhook-connector-to-send-data-from-powershell-to-microsoft-teams/

 

— Etape 4 — utiliser les webhook dans des scripts Bash avec curl

Utiliser la syntaxe suivante :

curl -H “Content-Type: application/json” -d “{\”text\”: \”Hello World\”}” <YOUR WEBHOOK URL>

et voilà :

A noter qu’il est possible un peu de personnaliser le visuel des messages envoyés.

Par exemple :

curl -H “Content-Type: application/json” -d “{\”title\”: \”Suivi de l installation de la plateforme OpenShift \”, \”text\”: \”Visiter le github [GitHub de Stan](https://github.com/squasta/TerraformAzureRM) pour plus d informations \”, \”themeColor\”: \”EA4300\”}”  <YOUR WEBHOOK URL>
 Va donner le résultat suivant :
Plus d’informations sur la personnalisation des messages dans Teams : https://dev.outlook.com/Connectors/GetStarted#posting-more-complex-cards
En espérant vous avoir donner de bonnes idées pour utiliser les webhooks 🙂

Leave a Reply