ChatOps — Mein Kollege der Bot

Gerade in verteilten Teams sind Tools wie Slack oder Mattermost kaum mehr wegzudenken: statt endloser Emailketten spielt sich ein Großteil der Kommunikation in Chatfenstern ab. Hier organisieren sich Teams, besprechen die ToDos des Tages, oder bitten bei Problemen schnell und unkompliziert um Hilfe.

Slack — der wohl populärste Chat im

Doch längst nicht jeder, der dort mitdiskutiert, ist ein Mensch: Nachrichten können auch von IT-Systemen innerhalb und außerhalb des Unternehmens kommen, wie z.B. Benachrichtigungen über neue Tickets im Issue-Tracker, den fehlgeschlagenen Build im CI-Server, oder vom Server, dem der Plattenplatz ausgeht — gerade solche praktischen Integrationen haben Slack so ungeheuer beliebt gemacht. Doch bisher war die Unterhaltung ein wenig einseitig und ging nur vom IT-System zum Mensch. Warum nicht auch mal anders herum?

Meet Hubot

Chat-Bots sind gerade voll im Trend, und an Frameworks herscht kein Mangel. Eins davon ist Hubot:

Hubot ist ein Open-Source Botframework von Github, das dort zur Automatisierung von Aufgaben verwendet wird. Das Projekt ist schon allein wegen der Webseite einen Blick wert.

Hubot — der “anpassbare, lebensverbesserne Robot” von GitHub

Der Schwerpunkt von Hubot liegt jedoch nicht darauf, in Gesprächen möglichst eloquent herüber zu kommen. Vielmehr ist er darauf ausgelegt, die Automatisierung von Routine-Aufgaben so einfach wie möglich zu machen.

Die Idee ist einfach: der Bot wird über einen Adapter in den Teamchat integriert, und dort über kurze, einfache Befehle angesprochen. Sein Vokabular erlernt er mithilfe kleiner Skripte. Dabei muss man nicht von Null anfangen: es gibt es ein riesiges Ökosystem an fertigen Integrationen für gängige Standardsoftware oder zu reinen Unterhaltungszwecken. 😄

Hubot ist ein NodeJS-Projekt und ist in Coffeescript geschrieben. Webentwickler dürften somit keine Schwierigkeiten haben eigene Skripte zu erstellen.

Schluss mit Routine

Der neue Kollege lässt sich mit einfachen Anweisungen dazu bewegen, lästige Routinearbeiten zu erledigen. Das könnten zum Beispiel sein:

  • Starten des CI-Build eines Projekts
  • Anzeigen der heute hinzugekommenen Tickets im Issue Tracker
  • Starten der Ende-zu-Ende-Tests auf der Test-Umgebung
  • Neustart einer Anwendung
  • Entsperren von Usern

Klar, das könnten wir auch alles über Webschnittstellen, Shell-Skripte oder Kommandozeilen lösen. Aber DevOps lebt nun mal von einem hohen Automatisierungsgrad (und auch ein wenig von der Faulheit der Entwickler 😉). Zudem gibt es hier eine soziale Komponente: bitte ich den Bot direkt in einem öffentlichen Chat um den Neustart einer Software auf der Entwicklungsumgebung, wissen direkt alle Kollegen Bescheid. Außerdem sieht der neue Kollege unmittelbar, wie er sich in so einer Situation behelfen kann.

Hier ein Beispiel für eine unserer Interaktionen:

gtudan > hubot restart Keycloak auf E in 20min
Hubot > @gtudan: Okay, los geht’s
Hubot > @gtudan möchte einen Keycloak-Neustart auf E in 20 Minuten! Veto?
Hubot > @here Keycloak auf E startet neu!

Legt ein Kollege sein Veto ein, stoppt der Restart. Das zugehörige Skript hierfür liegt auf Github.

Nicht nur für Entwickler

Routine-Aufgaben kommen nicht nur im Entwickleralltag vor. Sicher fallen euch sponat auch einige lästige Tätigkeiten ein, die gern auch ein anderer (nicht zwingend menschlicher) Kollege übernehmen könnte. Einen Raum für das nächste Meeting reservieren, Kennzahlen ermitteln, oder ein Restaurant für das Lunch aussuchen — wenn man erstmal angefangen hat, finden sich immer neue Jobs. Bei allem Spaß solltet ihr jedoch nicht aus den Augen verlieren, ob hier gerade die Produktivität gesteigert, oder eher vernichtet wird:

XKCD 1205: is it worth the time? (http://xkcd.com)

ChatOps im Unternehmenseinsatz

Nun arbeiten wir nicht alle in Start-Ups — in großen Unternehmen gelten oft strenge Richtlinien, wer auf welche Systeme Zugriff hat. Wenn nun ein Chatroom plötzlich zum Steuerungsinstrument für den Build-Server wird, müssen auch dort die üblichen Spielregeln gelten und ein entsprechendes Berechtigungskonzept erarbeitet werden.

Auf der anderen Seite kann ChatOps aber auch dabei helfen, Zugriffsberechtigungen sparsamer zu vergeben: wenn ein Bot Auskunft über die wichtigsten, unkritischen Kennzahlen des Tages geben, und kleinere Aufgaben direkt übernehmen kann, brauchen einige Mitarbeiter vielleicht gar keinen Zugang zu den eigentlichen Anwendungen mehr. Je nach Art der Software lassen sich so vielleicht sogar Lizenzgebühren sparen.

Viele der Integrationen für Slack sind darauf ausgelegt, dass die Anwendungen direkt über das Internet verfügbar sind. Hier sind selbstgehostete Lösungen wie Mattermost und Hubot eine gute Alternative. Auch Microsoft hat mit Flow und Teams Lösungen im Angebot, die sich gut in Unternehmenslandschaften einbinden lassen.

Fazit

Insgesamt ist ChatOps ein gutes Mittel, um DevOps im Unternehmen voran zu bringen: kaum ein anderes Tool hat eine so niedrige Einstiegshürde wie der Team-Chat, womit dies der ideale Ort ist, um Mitarbeiter an Automatisierung heranzuführen. Und es macht riesigen Spaß!