Aufgaben- und Prozessautomatisierung

Andrea Dainese
27 September 2023
Post cover

Seit etwa 2004 beschäftige ich mich mit Automatisierung, als ich etwa 200 Knoten auf dem AlphaServer verwaltete. Konkret war ich für den Hardware-Aspekt verantwortlich. Es mag einfach erscheinen, aber es ist wichtig zu bedenken, dass ein Mini-Betriebssystem unter Unix lief, das die verbundenen Komponenten überprüfte und sowohl kritische als auch nicht kritische Fehler erkannte. Nicht kritische Fehler so früh wie möglich zu identifizieren, bedeutete, einen Ausfall zu planen, um die fehlerhafte Komponente zu ersetzen und somit eine Nacht Arbeit zu sparen.

Die Automatisierung, die ich damals erstellt hatte, war ein Skript, das über SSH verschiedene Instanzen von Tru64 Unix zugriff, Diagnosewerkzeuge ausführte, erkannte Fehler abrief und sie je nach ihrer Kritikalität kategorisierte und für eine Überprüfung verfügbar machte.

Später, etwa 2007, befand ich mich häufig in der Verwaltung von Linux-Systeminstallationen. Das Ersetzen von DVD-Installationen durch ein automatisches System bedeutete, wöchentlich mehrere Stunden Arbeit zu sparen. Also entschied ich mich für PXE, über das beim Systemstart, physisch oder virtuell, der Linux-Installer geladen wurde, der das Betriebssystem gemäß einigen vordefinierten “Standard” -Parametern installierte (wir werden die Bedeutung der Anführungszeichen später verstehen).

Diese Linux-Systeme mussten dann je nach ihrer Rolle angepasst werden, indem spezifische Pakete und Konfigurationen installiert wurden. Nachdem ich CFEngine und Puppet ausprobiert hatte, entschied ich mich für letzteres, das, obwohl es neu war, weniger kompliziert erschien.

Später wechselte ich zur Netzwerkverwaltung und bearbeitete Dutzende von Cisco-Routern. Diese Router enthielten Zugriffslisten, die zum Filtern und Klassifizieren von Datenverkehr nach erforderlicher QoS verwendet wurden. Es waren wöchentlich einige kleine Änderungen an diesen Zugriffslisten vorzunehmen. Die von mir erstellte Automatisierung basierte auf Expect, das über SSH eine Verbindung zu den verschiedenen Routern herstellte und die Zugriffslisten ersetzte (aktualisierte). Netmiko und Ansible waren noch Träume derjenigen, die sie entwickeln würden.

Im Jahr 2011, aus persönlichen Studiengründen, musste ich die Erstellung von Netzwerklaboren automatisieren, was zur Entstehung von UnetLab führte, das jetzt unter dem Namen EVE-NG verwaltet wird und die Grundlage unseres Labors bildet.

Nachfolgende Erfahrungen in der Automatisierung umfassen:

  • Automatisierung von PANW-Firewallrichtlinien zur Aktivierung des Remotezugriffs auf Industriegeräte während bestimmter Wartungsfenster (das Projekt wurde dann vollständig als FWAdmin, ein Plugin für NetBox, neu geschrieben);
  • Automatisierung der Netzwerkerkennung und Generierung eines Teils der Dokumentation (das Projekt hat sich im Laufe der Zeit weiterentwickelt und wird jetzt als NetDoc, ein Plugin für NetBox, veröffentlicht);
  • Migration eines Rechenzentrums auf Cisco ACI-Technologie (Ich entwickelte Python-Skripte, die die APIs direkt aufriefen);
  • Erstellung eines Entwurfs für einen Behebungsplan aus Nessus-Ausgaben;
  • Bereitstellung von Leitungen für einen Diensteanbieter unter Verwendung von Cisco XR-Technologie (Ich wählte Ansible, um dem Netzwerkteam zu ermöglichen, die Playbooks autonom zu ändern);
  • Migration eines Backbone für einen Diensteanbieter auf Cisco XR-Technologie (Ich wählte Ansible für die Gerätebereitstellung und PyATS + Genie zur Validierung von rund 140 Geräten).

All diese Projekte lassen sich in zwei Kategorien einteilen, die ich nenne:

  • Einzelaufgabenautomatisierung;
  • Prozessautomatisierung.

Der Unterschied zwischen den beiden ist erheblich.

Einzelaufgabenautomatisierung

Ich nenne die Einzelaufgabenautomatisierung eine Aktivität, die aus einem rein persönlichen Bedarf entsteht und darauf abzielt, eine Reihe von Aktivitäten (Aufgaben) der einzelnen Person zu automatisieren. In den meisten Fällen beginnt die Automatisierung in einem Unternehmen so: Es gibt wiederkehrende Aufgaben, und wenn die Person, die sie ausführt, besonders kreativ ist, wird sie eine kleine Software schreiben, um diese Aufgaben zu automatisieren. Sehen wir uns ihre Merkmale an:

  • One-Shot;
  • Basierend auf prozeduralen Skripten, die geschrieben wurden, um eine Aufgabe zu lösen, und im Allgemeinen nicht wiederverwendbar sind;
  • Für den persönlichen Gebrauch bestimmt;
  • Involviert nicht das Team, bleibt aber auf die Einzelperson beschränkt;
  • Nicht in einem Verfahren enthalten;
  • Eng mit der Person verbunden, die sie entwickelt hat.

Kurz gesagt:

  • Einfach zu implementieren (Pro);
  • Skaliert nicht, verursacht eine Vermehrung von Skripten und ist auf spezifische Aufgaben beschränkt (Contra).

Was diese Art von Automatisierung am meisten auszeichnet, ist ihre kurze Lebensdauer: Sie entsteht aus dem Bedarf des Einzelnen und erreicht fast nie das Niveau eines Prozesses. Sobald der Autor die Rolle oder das Unternehmen wechselt, hört die Automatisierung auf.

Ich kann bestätigen, dass trotz der sehr hohen Anzahl von Stunden, die gespart wurden, 80% meiner Automatisierungsprojekte gestorben sind, sobald ich die Rolle oder das Unternehmen gewechselt habe.

Prozessautomatisierung

Ich nenne die Prozessautomatisierung die Automatisierung, die möglicherweise aus der Einzelaufgabenautomatisierung entsteht, die auf Unternehmensebene akzeptiert wird und daher zur Durchführung einer oder mehrerer spezifischer Aufgaben wird. Die Skripte sind dokumentiert, gewartet und von einem Team von Personen verwendet. Aber nicht nur das: Die Skripte sind der einzige autorisierte Weg, um zugehörige Aufgaben auszuführen. Sehen wir uns ihre Merkmale an:

  • Die Automatisierung basiert auf unternehmensweit genehmigten und auf Schwachstellen überwachten Frameworks;
  • Personen können nur über genehmigte Skripte handeln, und in Notfällen könnte dies ein Problem sein;
  • Im Vergleich zur vollen Freiheit bieten Skripte wenig oder keine Bewegungsfreiheit, und in Notfällen könnte dies ein Problem sein;
  • Skriptänderungen sind nur nach vorheriger Genehmigung und Tests zulässig;
  • Die Automatisierung ist vom Unternehmen genehmigt und als Standard definiert.

Kurz gesagt:

  • Der Prozess ist definiert, standardisiert, weniger anfällig für menschliche Fehler und, insbesondere dank einiger Frameworks, selbst dokumentiert (Pro);
  • Die Entwicklung der Automatisierung ist im Allgemeinen langsamer aufgrund der Anzahl der Personen, die an der Definition des Prozesses, der Standardisierung und der Entwicklung beteiligt sind. Langfristig entfernt die Automatisierung Fachwissen, da die Personen sich daran gewöhnen, Skripte zu verwenden, und den Blick auf die zugrunde liegende Welt verlieren.