Die Automatisierung nimmt Fahrt auf

Gefühlt ewig köchelte das Thema Automatisierung in der IT vor sich hin. Nun könnte man fast schon von einer beginnenden Eruption sprechen. Warum gerade jetzt, was hat sich geändert und welche Trends gibt es?

Aber der Reihe nach. Cloud-Lösungen haben sich zu zentralen Komponenten der modernen IT entwickelt. Praktisch alle diese Lösungen sind über Web-GUIs (Graphical User Interface) zu bedienen, wie zuvor bei lokalen Systemen. Man denke an Firewalls, Router, Switches, Virtualisierer, Web-, Antiviren-, Mail-Gateways und viele mehr. Praktisch wurden die sogenannten Fat-Clients (für Endgeräte programmierte Anwendungen) durch Web-Clients ersetzt.

Wie Tarzan

Speziell der moderne IT-ler schwingt sich wie Tarzan von einer Webconsole zu nächsten. Soll eine neue Webseite eingerichtet werden, müssen zum Beispiel WordPress, DNS, Firewall, Monitoring, Backup, Dokumentation, Arbeitszeiterfassung und Testsysteme über Weboberflächen bedient werden.

Bei solchen manuellen Prozessen (Workflows) schleichen sich individuelle Unachtsamkeiten ein, um nicht zu sagen Fehler. Bei einem einzelnen Prozess ist das vielleicht nicht das ganz große Thema, aber wenn mehrere Prozesse miteinander verkettet sind, dann auf jeden Fall. Und ist der erste Prozess schon unvollständig oder fehlerhaft, können sich die Probleme bei verketteten Abläufen multiplizieren.

REST

Was es braucht, ist ein einfacher und robuster Mechanismus, um die manuelle Bedienung durch eine automatische zu ersetzen, eben REST (mehr dazu hier). Dabei wird über das HTTP-Protokoll mit der jeweiligen Anwendung kommuniziert. Diese muss natürlich die entsprechenden Funktionen auch zur Verfügung stellen, also ein “REST-API” bereitstellen.

Beispiel FortiGate Firewall

Um eine Firewall-Regel zu setzen, bei Fortinet Policy genannt, gilt es, die Firewall über das HTTP-Protokoll anzusprechen – so wie Sie Ihren Browser bedienen würden – um beispielhaft diese Daten zu übertragen:

{
“method”: “POST”,
“url”: “/api/v2/cmdb/firewall/policy”,
“params”: {
“with_meta”: 1,
“datasource”: 1,
“vdom”: “root”
},
“data”: {
“action”: “accept”,
“schedule”: {
“qoriginkey”: “always”
},
“nat”: “enable”
}
}

REST und die Schwammerln

Wie die sprichwörtlichen Pilze sind die REST-APIs aus den Applikationen geschossen und praktisch alle Hersteller bieten diese Schnittstelle an. Das ist ein absoluter Meilenstein in der Automatisierung von IT-Prozessen. Denn damit ist es möglich, mit nur einer Technologie, die noch dazu einfach zu handhaben ist, alle manuellen Vorgänge zu ersetzen. Mit gewaltigen Vorteilen:

  • Sicherstellung, dass Vorgaben eingehalten werden
  • gleichbleibende Qualität
  • höhere Produktivität
  • Vollständigkeit
  • einheitliche Technologie bzw. Mechanismus für alle IT-Dienste
  • ideal für kleine schnelle agile Projekte
  • viele Werkzeuge verfügbar
  • Automatisierte Workflows vermeiden Fehler, liefern Vollständigkeit und gleichbleibende Qualität

Jenkins oder Python?

Sie sind auf den Geschmack gekommen und wollen loslegen? Jetzt fehlt nur noch der richtige Werkzeugkasten, um die APIs anzusteuern. Also ein Software-Werkzeug muss her. Mit flacher Lernkurve, flexibel, mit vielen fertigen Bausteinen und Beispielen, die den Aufwand gering halten.

Jetzt wird’s knusprig, denn es gibt zwei generelle Ansätze und die unterscheiden sich doch sehr! Die vielleicht auf den ersten Blick professionellere Lösung wäre ein Automatisierungsserver, zum Beispiel Jenkins. Eine Software, die speziell dafür gedacht ist, andere Programme zu steuern, eben Workflows auszuführen und für die es jede Menge Erweiterungen in Form von Plugins gibt.

Das klingt gut, zu gut. Für den, der schnell ein paar einfache Dinge umsetzen will, sei der Satz mit den Spatzen und Kanonen zitiert.

Wer es einfach, flexibel und unabhängig angehen will, greift zu der Programmiersprache PYTHON. Vor allem, weil praktisch jeder Hersteller Module für Python liefert. Hier ein Beispiel, wie einfach einer virtuellen Netzwerkkarte unter VMware vSphere der Stecker gezogen (Disconnect) werden kann:

import atexit
from pyVim.connect import SmartConnect, Disconnect
service_instance = SmartConnect(host=“host“,
                                user=“user“,
                                pwd=“password“,
                                port=“port“)

atexit.register(Disconnect, service_instance)

Docker

Im ersten Teil unserer kleinen Serie wurde angekündigt, dass im zweiten die Erklärung folgt, warum Digitalisierung (mit Containern) nur mit der eben vorgestellten Automatisierungstechnologie Sinn macht. Leider ist der Platz an dieser Stelle ausgegangen und es muss auf den dritten Teil verwiesen werden, der sich diesem Thema dann annimmt.

p.s. Werfen Sie auch einen Blick auf den ersten Teil