Von Jörg Hohwieler 3. August 2023
Die Automatisierung von IT-Konfiguration ist ein wichtiger Bestandteil der Aufgabenliste heutiger IT-Administrationen. Richtig angewandt, kann sie nicht nur die Konfiguration auf Server-Systemen, sondern auch auf verteilten Fertigungsmaschinen, mit z.B. Linux als Betriebssystem, verwalten und dafür sorgen, dass Systeme so konfiguriert werden wie es im Code festgelegt wurde (Infrastructure as Code). Das Konfigurationsmanagement kommt bereits direkt auf einem neu installierten System zum Einsatz sowie im weiteren Verlauf bei der Durchführung von Änderungen.
Wichtig in diesem Zusammenhang ist die sogenannte Idempotenz. Diese bezeichnet die Möglichkeit Code immer wieder kontinuierlich auszuführen mit dem selben Resultat wie bei der ersten Ausführung. Zum Beispiel würde die erstmalige Ausführung einen Benutzer anlegen, während die kontinuierliche weitere Ausführung den User nicht erneut versuchen würde anzulegen, da der User ja bereits existiert.
Eine funktionierende Automatisierung entbindet die IT Administration davon jedes System einzeln hinsichtlich seiner Konfiguration zu prüfen. Für eine handvoll Systeme mag eine manuelle Konfiguration noch machbar sein, sobald man aber einige dutzend Systeme konfigurieren muss, ist dies kaum noch manuell zu bewerkstelligen. Spätestens hier sollte man sich Gedanken über die Einführung eines Konfigurationsmanagement-Tools machen.
Konfigurationsmanagement für Fertigungssysteme ist eine besondere Herausforderung. Oft handelt es sich um kritische und spezielle Systeme, alte Systeme und Systeme, die nicht immer erreichbar sind, z.B. aufgrund von Wartungsarbeiten.
Um ein System in die Automatisierung aufnehmen zu können, gibt es einige Voraussetzungen wie z.B.:
- Erreichbarkeit im Netzwerk
- Login/Zugang zum System
- Unterstützung eines Konfigurationsagenten oder die Möglichkeit zur Ausführung von Remotebefehlen z.B. via SSH
Gerade für Linux-basierte Betriebssysteme in der Fertigung bietet sich Puppet als Lösung zum Konfigurationsmanagement an. Puppet basiert auf einer Client-Server-Architektur. Hierbei gibt es einen Puppetserver, der in regelmäßigem Intervall vom Client kontaktiert wird. Der Client sendet dabei eine Reihe von Fakten an den Puppetserver, anhand derer dieser einen Katalog für den Client kompiliert. Der Katalog beschreibt, wie das System konfiguriert sein soll. Der Agent auf dem Client sorgt dafür, dass das System dem Katalog entspricht. Dies setzt voraus, dass das Betriebssystem vom Puppet Agenten unterstützt wird. Zum Abschluss sendet der Client einen Report an den Puppetserver, der diesen z.B. in einer Datenbank ablegt, so dass man auch noch später einsehen kann, welche Änderungen ggf. durchgeführt wurden oder auch falls bei der Anwendung des Katalogs ein Fehler aufgetreten ist.
(Quelle: https://www.puppet.com/docs/puppet/8/what_is_puppet.html)
Sollte das zu konfigurierende Systeme ausgeschaltet sein, stört dies den Puppetserver nicht. Beim nächsten Start des Systems wird dieses den Puppetserver automatisch kontaktieren und ggf. vorliegende Änderungen anwenden. Die automatische Kontaktierung des Puppetservers nimmt der IT die Pflicht zu wissen, wann ein ausgeschaltetes Gerät wieder online geht. Da dies auch nachts oder an anderen ungünstigen Zeitpunkten stattfinden kann, ist dieser Automatismus eine Entlastung für die IT.
Nach der Installation des Agenten kontaktiert dieser automatisch alle 30 Minuten den Puppetserver. Sollte ein System so kritisch sein, dass dies nicht automatisch erfolgen soll, gibt es die Möglichkeit den Agenten per Cronjob zu einem selbst definierten Zeitpunkt zu starten. Eine weitere Möglichkeit für sehr kritische Systeme wäre z.B. auch, dass der Puppet Agent im “Noop Mode” ausgeführt wird und keine Änderungen durchführt, sondern nur anfallende Änderungen anzeigt. Sollten Änderungen wirklich durchgeführt werden, müsste eine verantwortliche Person den Puppet Agenten einmalig so starten, dass dieser die Änderungen anwendet.
Für den Umgang mit nicht mehr unterstützten Betriebssystemen existieren noch andere Lösungen, wie z.B. Ansible mit “raw commands” oder Shellscripts. Auch für Windows-basierte Systeme gibt es Lösungen.
Sollten Sie Interesse an der Automatisierung der IT im Fertigungsumfeld haben, freuen wir uns, wenn Sie sich bei uns melden.