<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Side Project on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/side-project/</link><description>Recent content in Side Project on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Mon, 15 Jun 2020 06:40:00 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/side-project/index.xml" rel="self" type="application/rss+xml"/><item><title>redalert : gérer les incidents avec un bot Slack</title><link>https://blog.zwindler.fr/2020/06/15/redalert-gerer-des-incidents-avec-un-bot-slack/</link><pubDate>Mon, 15 Jun 2020 06:40:00 +0000</pubDate><guid>https://blog.zwindler.fr/2020/06/15/redalert-gerer-des-incidents-avec-un-bot-slack/</guid><description>&lt;img src="https://blog.zwindler.fr/2020/06/Enterprise-D-bridge_2371-640x266-1.webp" alt="Featured image of post redalert : gérer les incidents avec un bot Slack" /&gt;&lt;p&gt;Il y a quelques mois, j’ai vu passer cet article écrit par un SRE de chez ManoMano : &lt;a class="link" href="https://medium.com/manomano-tech/incident-management-with-a-bot-7e80deb5b5e5" target="_blank" rel="noopener"
&gt;Incident Management with a bot&lt;/a&gt;. Il a été pas mal partagé et il m’a beaucoup plus, car il me permettait de creuser 2 sujets qui m’intéressaient justement à ce moment-là : les bots slack et la gestion d’incidents.&lt;/p&gt;
&lt;p&gt;Dans mon équipe actuelle, nous utilisons énormément Slack pour communiquer en interne. Au-delà du chit-chat quotidien, nous avons également pour habitude de créer des channels dédiés et d’y inviter les personnes concernées lors d’incidents sur la plateforme que nous administrons, de manière à centraliser les efforts entre les Ops, les Devs et les équipes support client.&lt;/p&gt;
&lt;p&gt;L’idée de pouvoir avoir un tool permettant à la fois de nous éviter de gérer à la main ces incidents tout en restant dans Slack était hyper séduisante&amp;hellip; Malheureusement, après avoir contacté l’auteur, celui-ci m’a confirmé qu’à l’heure actuelle, le tool de ManoMano n’était pas Open Source.&lt;/p&gt;
&lt;p&gt;Moult déceptions.&lt;/p&gt;
&lt;h2 id="yet-another-standard"&gt;Yet another standard
&lt;/h2&gt;&lt;p&gt;Clairement, j’étais grognon à l’idée de passer à côté d’un tool qui faisait EXACTEMENT ce que je voulais. Comme je n’aime pas réinventer la roue, je suis allé voir sur les Internets ce qui se fait ailleurs.&lt;/p&gt;
&lt;p&gt;Grosso modo, la solution qui m’a le plus plu est un outil qui a été open sourcé par Netflix et qui s’appelle &lt;strong&gt;Dispatch&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dispatch est &lt;a class="link" href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank" rel="noopener"
&gt;un VRAI outil d’Incident Management&lt;/a&gt;, avec des workflows et de nombreuses interactions avec des outils tiers. C’est très très classe, &lt;a class="link" href="https://hawkins.gitbook.io/dispatch/" target="_blank" rel="noopener"
&gt;il y a une doc superbe&lt;/a&gt;. Bref, c’est Netflix.&lt;/p&gt;
&lt;p&gt;Mais ce n’était pas tout à fait ce que je voulais. Aujourd’hui, Dispatch est clairement overkill pour les besoins de l’équipe. A l’heure actuelle, un simple workflow « j’ouvre un channel, j’invite des gens, j’archive le channel » nous suffit. D’où l’idée du bot slack de ManoMano.&lt;/p&gt;
&lt;h2 id="make-it-so"&gt;Make it so
&lt;/h2&gt;&lt;p&gt;Bon&amp;hellip; ManoMano a pondu l’idée du bot slack&amp;hellip; j’ai toujours eu envie d’écrire un bot slack&amp;hellip; et je suis en train de me (re)former à Python. Vous me voyez venir ?&lt;/p&gt;
&lt;p&gt;Et c’est ainsi que naquit &lt;a class="link" href="https://github.com/zwindler/redalert" target="_blank" rel="noopener"
&gt;Redalert, mon propre bot slack d’Incident Management&lt;/a&gt; (très&amp;hellip; très très) basique.&lt;/p&gt;
&lt;p&gt;Pour ceux qui ont un doute sur l’inspiration pour le nom, sachez que j’ai l’infâme défaut de n’avoir jamais joué à « Command and Conquer » (pas tapper), mais qu’en revanche je suis très fan de Star Trek.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/06/Enterprise-D-bridge_2371-640x266-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="a-quoi-ça-ressemble-"&gt;A quoi ça ressemble ?
&lt;/h2&gt;&lt;p&gt;Assez de teasing, voilà à quoi ressemble l’outil une fois installé. Lorsqu’un incident arrive, n’importe qui peut écrire dans le channel slack « /incident open » et une fenêtre de dialogue va s’ouvrir dans Slack avec un certain nombre d’options.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/06/redalert_slash_incident.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/06/screen_redalert.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Quand on tape « /incident open » dans un channel, voilà la popup qui s’ouvre&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C’est simple (voire simpliste) mais efficace.&lt;/p&gt;
&lt;h2 id="ce-que-loutil-fait"&gt;Ce que l’outil fait
&lt;/h2&gt;&lt;p&gt;Je ne vais pas vous copier-coller le contenu du README.md du projet, mais grosso modo les features actuelles (le « MVP » comme on dit dans le milieu) sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ouvrir une popup dans Slack via une commande « /incident open », permettant d’entrer un certain nombre d’informations puis d’ouvrir un channel Slack en fonction de ces paramètres&lt;/li&gt;
&lt;li&gt;configurer soit même les différents niveaux d’incident possibles&lt;/li&gt;
&lt;li&gt;ajouter de manière automatique une liste d’individus dans certains ou tous les niveaux d’incidents (de manière configurable)&lt;/li&gt;
&lt;li&gt;lister tous les incidents ouverts et/ou fermés (archivés)&lt;/li&gt;
&lt;li&gt;fermer un incident (en utilisant la fonction archiver de Slack)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ce-que-loutil-ne-fait-pas-encore"&gt;Ce que l’outil ne fait pas (encore)
&lt;/h2&gt;&lt;p&gt;Idéalement, dans le futur j’aimerais ajouter les fonctionnalités suivantes (quelque part entre « un jour » et « jamais »).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faciliter l’installation de redalert via une application packagée slack&lt;/li&gt;
&lt;li&gt;ajouter de manière optionnelle une base externalisée des incidents pour permettre des analyses a posteriori&lt;/li&gt;
&lt;li&gt;une gestion du « problem management » (au sens ITIL du terme, càd relier des incidents entre eux, entre autre)&lt;/li&gt;
&lt;li&gt;interagir avec des systèmes tiers tels que PagerDuty (prévenir l’OPS en astreinte), Trello, Confluence (Postmortems), &amp;hellip;&lt;/li&gt;
&lt;li&gt;Permettre dans le dialog d’ouverture d’incident d’ajouter plusieurs personnes d’un coup (a priori &lt;a class="link" href="https://stackoverflow.com/questions/48523512/slack-interactive-message-menu-select-multiple" target="_blank" rel="noopener"
&gt;pas techniquement possible pour l’instant dans l’API Slack&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Un vrai fichier de configuration custom qui remplace les valeurs par défaut du config.py pour ne pas avoir à le réécrire complètement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="comment-linstaller-"&gt;Comment l’installer ?
&lt;/h2&gt;&lt;p&gt;Comme je suis sympa avec vous, j’ai mis à disposition sur le projet Github zwindler/redalert &lt;a class="link" href="https://github.com/zwindler/redalert" target="_blank" rel="noopener"
&gt;toute la documentation d’installation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actuellement, le projet est distribué de 3 manières :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les sources du code python, que vous pouvez lancer sur n’importe quelle machine disposant de python 3.6+ avec les modules (pip) slack et flask&lt;/li&gt;
&lt;li&gt;une image Docker préconfigurée, disponible sur le Dockerhub&lt;/li&gt;
&lt;li&gt;un Chart que vous pouvez déployer sur Kubernetes avec Helm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout est décrit pas à pas dans le &lt;a class="link" href="https://github.com/zwindler/redalert" target="_blank" rel="noopener"
&gt;README.md&lt;/a&gt; du projet.&lt;/p&gt;
&lt;p&gt;Je pense que le plus important a été dit. Donc en attendant vos retours =&amp;gt; Have fun :D&lt;/p&gt;
&lt;h2 id="bonus--comment-ça-marche-"&gt;Bonus : comment ça marche ?
&lt;/h2&gt;&lt;p&gt;Je ne vais pas passer trop de temps là-dessus (quitte à faire un article un peu plus long dédié à ça une autre fois), mais l&lt;a class="link" href="https://api.slack.com/#read_the_docs" target="_blank" rel="noopener"
&gt;‘API mise à disposition par Slack est relativement bien documentée&lt;/a&gt; et il existe des modules dans la plupart des langages courants qui intègrent des méthodes pour toutes les appels qui existent sur l’API.&lt;/p&gt;
&lt;p&gt;Autant dire que même pour un OPS, c’est accessible, si jamais vous avez une autre idée de bot slack en tête.&lt;/p&gt;
&lt;p&gt;Le seul vrai souci que j’ai rencontré a été que &lt;a class="link" href="https://api.slack.com/tutorials" target="_blank" rel="noopener"
&gt;les exemples donnés&lt;/a&gt; pour le sdk python du client Slack le sont dans 2 versions, et que les premiers exemples de code sur lesquels je suis tombé (les plus approchant de ce que je voulais faire) sont en version 1 alors que la version actuelle est la 2 (bien sûr&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Le code source du projet en lui-même est relativement trivial. Mon serveur Flask écoute sur 3 URLs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un /, notamment pour les healthchecks dans Kubernetes&lt;/li&gt;
&lt;li&gt;un /incident qui reçoit toutes les commandes « /incident open|list|close » et qui redispatche ensuite en fonction du contexte&lt;/li&gt;
&lt;li&gt;un /dialog qui, comme son nom laisse penser, permet de gérer le retour POST du dialog qui est popé après le /incident open&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bonus-2--contribuer-"&gt;Bonus 2 : contribuer ?
&lt;/h2&gt;&lt;p&gt;Pour être parfaitement honnête, il y a peu de chance que je bosse énormément dessus. Ce projet a été développé sur mon temps perso initialement, en side project un peu bébête. Et même si au final, on a fini par l’adopter en production sur notre Slack pro, pour l’instant il nous suffit tel qu’il est.&lt;/p&gt;
&lt;p&gt;Néanmoins, je suis plus qu’ouvert à toutes les propositions d’amélioration ou de contributions, dans le cas où cet outil vous plairait.&lt;/p&gt;
&lt;p&gt;Cela se fera en best effort et sans aucune garantie, mais si on est d’accords sur ce point, moi ça me fera plaisir de savoir que ça peut être utile à quelqu’un !&lt;/p&gt;</description></item><item><title>Visualisez les limites de votre confinement avec unkm.fr</title><link>https://blog.zwindler.fr/2020/03/25/unkm-fr/</link><pubDate>Wed, 25 Mar 2020 09:00:00 +0000</pubDate><guid>https://blog.zwindler.fr/2020/03/25/unkm-fr/</guid><description>&lt;img src="https://blog.zwindler.fr/2020/03/unkm_cercle-1.webp" alt="Featured image of post Visualisez les limites de votre confinement avec unkm.fr" /&gt;&lt;p&gt;Aujourd’hui, je vais faire un bref article pour parler du &lt;em&gt;side project&lt;/em&gt; [qu’un collègue]([Pixeye33) vient de démarrer et que je trouve génial.&lt;/p&gt;
&lt;p&gt;A moins d’avoir vécu confiné AVANT la crise du coronavirus (ahah), vous êtes probablement au courant que les déplacements sont très limités (&lt;strong&gt;&lt;em&gt;restez chez vous&lt;/em&gt;&lt;/strong&gt;). Cependant il existe une dérogation depuis le début du confinement décrété le 16 mars 2020 : aller brièvement faire du sport.&lt;/p&gt;
&lt;p&gt;Au début, le flou était total, les consignes contradictoires. Beaucoup s’en sont d’ailleurs amusés (notamment les réponses du CM du Ministère des Sports sur Twitter).&lt;/p&gt;
&lt;p&gt;Heureusement, depuis lundi soir, les règles ont été précisées :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/03/ministere_sport_2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Source Sports_gouv sur Twitter&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="et-alors-"&gt;Et alors ?
&lt;/h2&gt;&lt;p&gt;Sauf que 1km autour du domicile, à moins d’habiter au centre d’une route de la forme d’un cercle de 1km de rayon, c’est pas facile à délimiter. On peut bien prendre une carte routière et tracer un cercle (c’est très digital) mais avec le numérique on doit pouvoir faire mieux !&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(vous avez vu le troll subtil digital/numérique?)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Long story short, mon collègue @Pixeye33 (plus sur Twitter) a eu la bonne idée de faire un petit service en ligne pour vous aider à faire ça.&lt;/p&gt;
&lt;p&gt;Le site s’appelle &lt;a class="link" href="http://unkm.fr" target="_blank" rel="noopener"
&gt;unkm.fr&lt;/a&gt; et comme son nom l’indique il va vous tracer un cercle de 1km de rayon à l’endroit où vous allez cliquer sur la carte.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/03/unkm.fr_.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour le maire de Bordeaux ça donne ça&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Point appréciable, il n’y a pas de trackers ;-). Ce qui n’est peut être pas le cas d’autres services en ligne&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/03/trackers.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Merci Kimetrak (ping NextInpact)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="mise-à-jour-du-02042020"&gt;Mise à jour du 02/04/2020
&lt;/h2&gt;&lt;p&gt;Plusieurs nouvelles fonctionnalités très utiles ont fait leur apparition dans l’application :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la possibilité d’utiliser la position actuelle de votre navigateur pour accélérer la recherche de la position où vous vous trouvez&lt;/li&gt;
&lt;li&gt;l’affichage des coordonnées GPS du point choisi dans l’URL, ce qui permet de la sauvegarder si vous voulez revenir ou partager cette position avec quelqu’un&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et surtout, grâce à une contribution de Jean-Marie Favreau&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la possibilité de tracer un parcours (pour une promenade) circulaire aux limites du cercle de 1km de rayon de votre confinement. Cette nouvelle fonctionnalité est hyper utile ! Merci à lui&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/03/unkm_cercle-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="on-en-parle-dans-la-presse-"&gt;On en parle dans la presse !!
&lt;/h2&gt;&lt;p&gt;L’outil a fait son petit buzz puisque au moins deux médias en ont parlé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.sudouest.fr/2020/03/25/confinement-un-girondin-cree-un-outil-simplissime-pour-localiser-la-zone-d-un-km-autour-de-chez-soi-7361672-2780.php" target="_blank" rel="noopener"
&gt;Sud Ouest - Confinement : un Girondin crée un outil simplissime pour localiser la zone d’un km autour de chez soi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.20minutes.fr/bordeaux/2748671-20200326-coronavirus-gironde-confine-talence-cree-outil-permettant-depasser-kilometre-autorise" target="_blank" rel="noopener"
&gt;20minutes Bordeaux - Coronavirus en Gironde : Confiné à Talence, il crée un outil permettant de ne pas dépasser le kilomètre autorisé&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>