Fotolia

Tipps für die Skript-Netzwerkautomatisierung in Eigenregie

Nutzen Sie unsere Best Practices für die Netzwerkautomatisierung, um Standardisierung, Change-Management-Prozesse und Immutabilität in Ihre Automationsstrategien zu integrieren.

Automatisierung ist von entscheidender Bedeutung, um Netzwerke schnell und umfassend sowie sicher und zuverlässig zu verwalten. Die meisten Netzwerkteams schreiben einige der Automatisierungsskripte selbst, die sie für die Bereitstellung und Verwaltung von Ressourcen im Netzwerk verwenden.

Im Folgenden finden Sie Beispiele für Aufgaben der Netzwerkautomatisierung, die in Eigenregie (Do it yourself, DIY) realisiert werden:

  • Bereitstellung von virtuellen Appliances
  • Installation von Software- und Firmware-Updates auf physischen Geräten
  • Verteilen einer Gerätekonfiguration
  • Bereitstellung von Änderungen an Konfigurationen
  • Abrufen von Geräteinformationen und Speichern in einer Datei oder Datenbank

Netzwerkexperten schreiben ihre eigenen Skripte, um Geld für Management-Tools zu sparen oder um Defizite der vorhandenen Tools zu kompensieren. Zum Beispiel kann es eine umfassende Automatisierung per Managementkonsole für die drahtlose, nicht aber für die kabelgebundene Infrastruktur geben oder für Geräte eines bestimmten Netzwerkausrüsters, nicht aber für andere.

Manchmal nutzen IT-Teams Skripte, um die Arbeit eines Management-Tools über dessen API statt über eine grafische Benutzeroberfläche zu steuern. Womöglich setzen sie sogar Skripte ein, um Management-Tools, die verschiedene Segmente des Netzwerks kontrollieren, miteinander zu verknüpfen.

Das Ziel besteht darin, zeitaufwendige oder fehleranfällige Aufgaben zu automatisieren. Indem man diese Vorgänge automatisiert, lassen sich Fehler reduzieren, die sich auf Dienste oder die Sicherheit auswirken. Die Reduzierung von Fehlern bietet den zusätzlichen Vorteil, dass Administratoren Zeit sparen, insbesondere die Zeit, die für die Fehlersuche und die Fehlerbehebung aufgewendet werden müsste.

In einigen Data Centern und Cloud-Umgebungen ist diese Art der skriptgesteuerten oder programmatischen Kontrolle des Netzwerks Teil einer DevOps-Kultur. Netzwerkteams außerhalb dieser Umgebungen betreiben eher selten DevOps und sind nicht einmal annähernd Vollzeitentwickler. Selbst wenn sie eine Agile-Methodologie verfolgen, gibt diese keine spezifischen Best Practices für ihr Coding vor, wie es DevOps-Kulturen tun.

Daher können Netzwerkteams, die auf sich allein gestellt sind, einige Best Practices befolgen, um zu gewährleisten, dass ihre Maßnahmen die Zuverlässigkeit, Sicherheit und Wartungsfähigkeit langfristig unterstützen.

Abbildung 1: Diese Best Practices können Netzwerkteams dabei helfen, ihre Initiativen zur DIY-Netzwerkautomatisierung zu optimieren.
Abbildung 1: Diese Best Practices können Netzwerkteams dabei helfen, ihre Initiativen zur DIY-Netzwerkautomatisierung zu optimieren.

Denken Sie beim Sripting auch an andere

Eine wichtige Erkenntnis, die Netzwerkmitarbeiter beim Schreiben von Automatisierungsskripten verinnerlichen sollten, lautet: Dieses Skript ist nicht nur für mich bestimmt. Wer ein Skript mit der Erwartung schreibt, es mehr als einmal zu verwenden, sollte davon ausgehen, dass jemand anderes es eines Tages wahrscheinlich verwenden wird. Diese Person könnte ein Kollege, ein Nachfolger oder der ursprüngliche Skriptautor sein – im Laufe der Zeit können Details und Aspekte in Vergessenheit geraten, an die der Autor beim Schreiben des Codes gedacht hat.

Wenn Autoren ohne Rücksicht auf andere programmieren, kann es für Netzwerkadmins schwierig und zeitaufwendig sein, die Funktionen, das Verhalten, die Anforderungen, den erwarteten Kontext und die Auswirkungen des Codes zu verstehen.

Das Problem von Spaghetticode lässt sich vermeiden, indem man die folgenden Best Practices anwendet:

  • Legen Sie einige wenige Coding-Standards fest: Beispielsweise können Teams beschließen, dass jedes Skript für alle Objektnamen das Snake- oder das Camel-Format verwendet. Es spielt keine Rolle, welches Format genutzt wird. Wichtig ist die Konsistenz innerhalb eines bestimmten Programms. Einige sehen einen Vorteil darin, noch einen Schritt weiter zu gehen und in Variablennamen Informationen über die Variable selbst zu integrieren – etwa ob es sich um einen Integer-Wert oder einen String handelt. Das geschieht typischerweise, indem man ein Präfix oder Suffix hinzufügt, zum Beispiel str_benutzername für einen String, der einen Benutzernamen enthält.
  • Geben Sie Variablen, Funktionen, Subroutinen, Programmen und Dateien einen aussagekräftigen Namen: Wenn ein Autor eine Variable zur Identifizierung einer Netzwerk-Appliance verwenden will, ist die Bezeichnung appliance_id für andere Personen weitaus nützlicher als der Name var_1.
  • Fügen Sie am Anfang eines Skripts Kommentare ein, die allgemeine Punkte erläutern: Diese Kommentare erklären, wozu das Programm dient, welche Voraussetzungen erfüllt sein müssen, damit es läuft, und welchen grundsätzlichen Ansatz es verfolgt, um das Problem zu lösen.
  • Fügen Sie Kommentare vor wichtigen Abschnitten eines langen Codeteils ein: Diese Kommentare erklären allgemein verständlich, was der folgende Codeabschnitt bewirkt und wie er dies erreicht.

Für IT-Teams ist es außerdem hilfreich, ein Standard-Tool-Set festzulegen. Wenn die Wahl der Tools völlig freisteht, kann es passieren, dass jeder Admin eine andere Sprache oder Plattform nutzt und kein Einvernehmen besteht.

Eine Einheitslösung eignet sich aber ebenso wenig. Es muss nicht jeder überall seinen gesamten Code in Python oder Ähnlichem schreiben. Stattdessen sollten die IT-Teams eine kleine, begrenzte Anzahl von Sprachen oder Plattformen definieren, die sie für die Ad-hoc-Automatisierung verwenden können, die sie schreiben. Diese Strategie ermöglicht es allen Teammitgliedern, zumindest grundlegende Kenntnisse über alle eingesetzten Tools zu besitzen. Auf diese Weise sind sie in der Lage, die Arbeit der anderen zu nutzen, zu erweitern, zu aktualisieren oder zu korrigieren. Die IT-Teams können bei Bedarf Sprachen oder Plattformen zugunsten von besseren Lösungen ersetzen.

Verwalten Sie Code und Änderungen sorgfältig

Wenn die IT-Abteilung in einem Unternehmen eine neue Version einer wichtigen Anwendung oder eines Betriebssystems einführt, folgt sie im Allgemeinen einem Change-Management-Prozess. Die IT-Teams prüfen die vorgeschlagene Änderung. Verfügt die IT über einen Plan, um die Änderung durchzuführen? Gibt es einen Plan, um zum vorherigen Stand zurückzukehren, falls die Änderung ein Problem verursacht? Hat das Team die Änderung gründlich getestet? Gibt es einen Plan, um die betroffenen Benutzer zu informieren?

Eine wichtige Erkenntnis, die Netzwerk-Mitarbeiter beim Schreiben von Automatisierungs-Skripten verinnerlichen sollten, lautet: Dieses Skript ist nicht nur für mich bestimmt.

Nachdem die IT-Teams die Änderung genehmigt haben, terminieren sie deren Bereitstellung. Dabei wählen sie oft ein Zeitfenster für die Änderung, das die negativen Auswirkungen begrenzt, falls etwas schiefläuft, und die Beeinträchtigungen für die Nutzer minimiert, unabhängig davon, wie die Änderung verläuft.

Die Netzwerkautomatisierung zählt zur kritischen IT-Software. Wenn Netzwerkteams also ein aktuell im Einsatz befindliches Programm modifizieren wollen, sollten sie einen ähnlichen, optimierten Prozess nutzen. Der Prozess für das Netzwerk-Change-Management sollte zumindest sicherstellen, dass die Teams:

  • Änderungen an einem Skript testen, bevor sie eine neue Version für den Produktiveinsatz freigeben
  • im Voraus ankündigen, wann sie die alte durch die neue Version ersetzen werden

Der Begriff neue Version wirft die Frage der Codeverwaltung auf. Netzwerkteams sollten wissen, welche Version eines Skripts aktuell ist, wo man es finden kann und wer es wann zuletzt aktualisiert hat. Diese Informationen stellen das Mindestmaß an Codeverwaltung dar. Netzwerkteams können Codeverwaltungs-Tools verwenden, um die Versionskontrolle – per Check-in und Check-out – zu gewährleisten und die Autoren zu erfassen.

Denken Sie auch an die Immutabilität

Darüber hinaus sollten Netzwerkteams einen Ansatz in Betracht ziehen, der unter DevOps-Teams, die in ihren Umgebungen IaC-Management (Infrastructure as Code) nutzen, weit verbreitet ist: Immutability, auch als Immutabilität, Unveränderbarkeit oder Manipulationssicherheit bezeichnet. Bei der Immutability geht es darum, dass ein Wert oder eine Konfiguration nicht geändert, sondern nur geplant ersetzt oder entfernt werden kann.

Wenn Netzwerkteams zum Beispiel eine virtuelle Appliance bereitstellen, sollten sie deren Konfiguration als unveränderlich betrachten, das heißt, sie darf nicht modifiziert werden. Falls die virtuelle Appliance eine Konfigurationsänderung erfordert, stellt das Netzwerkteam eine neue virtuelle Appliance mit einer Konfiguration bereit, die die Änderung enthält. Die ältere, falsch konfigurierte Instanz steht nicht mehr zur Verfügung. Oder wenn das Team Konfigurationsänderungen an einem physischen Gerät vornimmt, wird nicht nur die Änderung selbst, sondern eine vollständige Konfiguration inklusive der Änderung verteilt.

Das Ziel unveränderlicher Konfigurationen besteht darin, Konfigurationsabweichungen in der Umgebung zu minimieren oder zu beseitigen. Indem man vollständige Konfigurationen oder Images bereitstellt, werden alle nicht genehmigten Änderungen auf dem Gerät gelöscht.

Durch die Immutabilität lässt sich auch ein häufiges Problem lösen, bei dem die Verteilung per Push-Verfahren an ein Gerät (mit Änderung A) fehlschlägt, ein späterer Versuch (mit Änderung B) jedoch erfolgreich verläuft. Wenn der zweite Übertragungsversuch nur Änderung B enthält, ist das Gerät immer noch nicht ordnungsgemäß konfiguriert, weil Änderung A fehlt. Doch wenn es sich bei der zweiten Übertragung um eine vollständige Konfiguration handelt, die sowohl A als auch B umfasst, ist die Compliance des Gerätes dadurch anschließend wieder gegeben. Und wenn Änderung B von Änderung A abhängt, bedeutet die Übertragung einer vollständigen Konfiguration, dass Änderung B nicht automatisch bei allen Geräten fehlschlägt, bei denen Änderung A fehlgeschlagen ist.

Netzwerkteams verwenden in großem Umfang Ad-hoc-Automatisierung, eine Tendenz, die jedes Jahr weiter zunehmen dürfte. Eine effizientere Nutzung dieser Automatisierungsskripte kann dazu beitragen, dass ihre Maßnahmen erfolgreicher sind und ihr Arbeitsstress verringert wird.

Erfahren Sie mehr über Netzwerksoftware