ATIX #CrewDay: Rhino lernt Sprechen!
Beim #CrewDay werden selbstverständlich die Kollegen aus dem Marketing nicht außenvorgelassen. Daher ist es wichtig Themen zu finden, die für alle Abteilungen relevant sind. Vor diesem Hintergrund hatte vor einiger Zeit ein Kollege die Idee mittels Sprachsteuerung einen neuen Host mit Hilfe von orcharhino zu erstellen. Ein perfektes Projekt für den #CrewDay! Also hieß es nicht lange fackeln, sondern unserem Rhino das Sprechen beibringen. Rhino? Ist das ein Kollege bei ATIX? Fast – Rhino ist das „Maskottchen“ unseres Produkts orcharhino. Mit diesem können Rechenzentren weiter automatisiert und das Deployment, Configuration- und Patch Management von Linux Servern unter einer einheitlichen Oberfläche umgesetzt werden.
Doch zurück zu unserem kleinen Alexa-Projekt: Zunächst galt es die dafür vorhandenen Möglichkeiten auszuloten. Variante eins wäre eine eigene Alexa Skill zu schreiben. Variante zwei ist die, für die wir uns zunächst entschieden haben: Als Kommunikationsvermittler zwischen Amazon Echo Dot und orcharhino nutzten wir Node-RED. Node-RED wurde initial von IBM entworfen und steht unter einer Open Source Lizenz. Dadurch lassen sich Szenarien im Internet der Dinge direkt im Browser wie in einem Baukastensystem zusammensetzen. Neben Alexa sind weitere Module für Google Dienste, IRC, Social Media Plattformen und zur Steuerung von Smart Home Geräten verfügbar. Dabei kam gleich eine weitere Idee auf: Warum nicht mit Hilfe eines Tweets einen neuen Server per orcharhino bauen?
Nach der Installation von Node-RED mittels „npm“ kann man mit dem Browser per http://127.0.0.1:1880 direkt darauf zugreifen. Weitere Module können per „Manage Palette“ über das Menu auf der rechten Seite neben „Deploy“ gesucht und installiert werden. Hier haben wir das Modul node-red-contrib-alexa-home-skill [1] hinzugefügt. Dieses Modul nutzt einen Server [2] im Internet mit dem es zwischen Alexa und Node-RED kommuniziert. Eigentlich wollten wir das vermeiden und alles lokal umsetzen. Doch dann stellten wir fest, dass andere Module [3], die sich mit dem lokalen Netzwerk begnügen, ausscheiden. Denn Node-RED, Alexa und orcharhino sind nicht im gleichen Netzwerk. Es dauerte ein paar Minuten bis eine erfolgreiche Kommunikation zwischen Alexa und Node-RED bestand. Nun konnten wir erste Sprachbefehle über Node-RED empfangen. Als nächstes galt es nun, orcharhino anzubinden.
In Node-RED ist ein Modul zum Senden von HTTP Requests vorhanden. Die API von orcharhino erlaubt so gut wie alles über entsprechende API Aufrufe zu steuern. Dies beinhaltet das Anlegen von Content Views, das Löschen von Compute Resources sowie das Starten eines Deployment-Prozesses für neue Hosts. Dies war in Kürze geschafft und wir konnten Alexa mit „Alexa, rhino ein“ (wir verwenden rhino statt orcharhino , denn wir als Entwickler wissen: „In der Kürze liegt die Würze“;) ) auffordern, einen neuen Host zu bauen.
Nun noch die Auflösung für alle, die sich wundern, warum wir „orcharhino ein“ als Kommando verwendet haben: Dieser node-red-contrib-alexa-home-skill bildet intern Smart Home Funktionalitäten wie Lampensteuerung ab. Daher ist der Skill von Sytax- und Sprachbefehlen für unseren Anwendungsfall ungeeignet.
Doch das sei nur am Rande erwähnt, nun wieder zurück zum Essentiellen:
Die Erstellung neuer Hosts mittels Tweet und dem Posten einer Nachricht in einen IRC Channel, sobald ein neuer Host verfügbar ist 🙂
Der fertige Node-RED Flow sieht folgendermaßen aus:
Für die Ansteuerung der orcharhino API mussten wir den Header und den HTTPS Post Body definieren. Hierfür haben wir folgende Methode verwendet:
//set headers and payload var payload = { "host": { "enabled": true, "compute_resource_id":"1", "hostgroup_id":"1", "location_id":"2", "organization_id":"1", "compute_attributes": { "start":"1" }, "interfaces_attributes": { "0":{ "subnet_id":"1" } } }}; // construct the result msg.payload= JSON.stringify(payload); msg.headers = {}; msg.headers["Content-Type"] = "application/json"; msg.headers["Accept"] = "application/json"; return msg;
Nachdem die Nachricht per „Send orcharhino HTTPS Post“ abgeschickt wurde, erhält Node-RED die Antwort auf den HTTPS Post Request in „Set New Host Msg“. In dieser Javascript Funktion extrahieren wir den Namen des neuen Hosts:
//Set New Host Msg var hostname = msg.payload.match(/"name":"([a-zA-Z-\.]*).stage.atix"/); var msg = {}; if (hostname !== null{ msg.payload = "New Host created: " + hostname[1]; } return msg;
In der restlichen Zeit haben wir uns noch überlegt, wie wir einen eigenen Alexa Skill so entwerfen, dass wir auf den entfernten Server verzichten und zudem richtige Kommandos à la „Alexa, baue mit orcharhino einen mittelgroßen Host“ geben können. Hier hatten wir wieder das Problem mit unterschiedlichen Netzwerksegmenten. Leider ging uns dann die Zeit aus, um eine adäquate Lösung zu finden. Bei einem der nächsten ATIX #CrewDays wollen wir dies jedoch nochmal aufgreifen und einen eigenen Alexa Skill entwerfen.
Was haben wir gelernt:
– die Sprachsteuerung über Alexa ist ziemlich gut!
– Node-RED als Tool zur Vernetzung von Internet der Dinge Komponenten ist sehr mächtig!
– es macht Spaß mit orcharhino ausgefallene Ideen umzusetzen!
[1] https://www.npmjs.com/package/node-red-contrib-alexa-home-skill
[2] https://alexa-node-red.bm.hardill.me.uk/
[3] https://www.npmjs.com/package/node-red-contrib-alexa-local
Amazon hat mit Alexa bzw. Echo (Dot) Maßstäbe gesetzt. Es ist davonauszugehen, dass sich unser Projekt auch mit anderen Systemen wie Google Home Assistant oder Apple HomePod umsetzen lässt.
Was ist orcharhino?
orcharhino ist DAS Tool um in einem Rechenzentrum Server automatisch zu deployen, Configuration Management durchzuführen und mittels Patch Managment immer up-2-date zu sein. In orcharhino werden mehrere Open Source Technologien miteinander verbunden um die Ziele Automatisierung und Standardisierung zu erreichen. Dazu bietet orcharhino drei Kernfunktionen; Deployment, Patch Management, Configuration Management und noch einiges mehr. Alles natürlich Enterprise tauglich.
ATIX-Crew
Neueste Artikel von ATIX-Crew (alle ansehen)
- Foreman Birthday Party 2024 - 1. August 2024
- CrewDay 2024 - 6. Juni 2024
- Die XZ-Sicherheitsschwachstelle: Eine Übersicht - 9. April 2024