"Wir sind keine Programmierer, wir sind Sysadmins"
Die Zeiten haben sich zum Schlechten gewandelt: Von einem Graubart wie mir wurde erwartet , dass er ein besserer Programmierer ist als professionelle Programmierer, oder er hätte sich niemals als Systemadministrator durchsetzen können .
Jetzt haben wir "Systemadministratoren", die im Grunde Windows-Desktopbenutzer sind, die irgendwann auf Linux umgestellt haben und nicht programmieren können und daran nichts auszusetzen haben.
Der Elefant im Raum ist der Grund, warum das Management solch eine destruktive Haltung toleriert. Zerstörerisch für wen oder was? Zum Geschäft und zur Infrastruktur.
Zurück zum Thema Puppet [, CFEngine, Chef]: Sobald man eine solche Lösung einsetzt, verliert man. Jeder verliert. Warum? Denn wer auch immer auf die Idee kommt, ist nicht in der Lage, gekapselte Konfigurationsverwaltung in Form von netten, sauberen Kickstart- [, JumpStart-, Automated Installer-, AutoYaST-, Ignite-UX-, NIM-] Betriebssystempaketen zu entwerfen. Wenn Sie ein automatisiertes Hacking-Tool wie Puppet (oder Chef oder CFEngine) verwenden müssen, müssen Sie nicht unbedingt einen Prozess entwerfen und implementieren , mit dem verwaltete Systeme vollständig durchgesetzt und ausgelöscht werden können automatisiert und völlig nicht interaktiv.
Ein weiterer wichtiger Punkt ist, dass Sie, wenn Sie Puppet oder eine ähnliche Lösung benötigen , um die Hacking- System- oder Anwendungskonfiguration von Hand zu korrigieren , nicht die Erfahrung haben, einen Prozess zu entwerfen, und in diesem Prozess ein Framework, in dem die Konfiguration gepackt ist in diskrete Komponenten. In der Tat, wer auch immer Puppet und dergleichen implementiert, hat kein Konzept von Komponentenbesitzern, Releases, Konfigurationsmanagement, Capability Maturity Model. Dies entwickelt sich rasch zu einem sehr ernsten Problem in der Branche.
Die Arbeit mit Puppet hat mir auch geholfen, Ruby zu lernen, das Bash als meine Standardsprache für Systemtools ersetzt. "
Warum wird Ruby benötigt, wenn ein umfassendes End-to-End-Konfigurationsmanagement in Abschnitte von Betriebssystempaketen vor der Installation, nach der Installation, vor dem Entfernen und nach dem Entfernen eingeschlossen werden kann, indem nur Bourne-Shell-Programme, AWK und sed verwendet werden? Dass sich jemand die Mühe macht, eine esoterische Sprache von Ruby und einen Dialekt davon im Kontext von Puppet zu lernen, ist völlig unnötig. Das Problem des Konfigurationsmanagements ist mit Shell-Programmen und AWK leicht lösbar (und damit gelöst), und hier und da ein wenig sed (1) als Klebstoff.
Es ist ein cooles Gefühl zu sehen, wie Ihre Marionette eine ganze Maschine oder einen neuen Service von Grund auf neu konfiguriert.
Noch cooler ist es, wenn dies von Kickstart, AutoYaST oder JumpStart ohne eine einzige Codezeile ausgeführt wird und das Betriebssystem mithilfe integrierter Tools abgefragt werden kann, ohne dass esoterische oder zusätzliche Software , kein Client-Server , erforderlich ist Erforderliche Architektur (SSH ist mehr als in Ordnung, weit mehr als in Ordnung), und Ihr Betriebssystem muss über jede einzelne Änderung informiert sein.
5. Code von Daten trennen. Dies ist eines der schwieriger zu erlernenden Konzepte. Das Hardcodieren von Werten wie Monitoring Hosts in Ihren Modulcode ist schlecht. Das Speichern in einem Datenspeicher (db, yaml (Hiera verwendet dies als Standard), csv usw.), den Ihre Module verwenden können, ist gut. Ein Beispiel ist eine Webapp, die MySQL verwendet. Dies ermöglicht die Möglichkeit, Code und Daten getrennt zu übertragen. Dies vereinfacht Ihren Entwicklungsprozess.
... Oder Sie könnten nur Vorlage Konfigurationsdateien mit Shell - Variablen, auch einfachen Anführungszeichen (zum Beispiel ls -1 ...
) und ein Shell - Skript schreiben , die AWK verwendet eval aufrufen (1) und erweitern , um alle Variablen in der Vorlage, wodurch genau die gleiche Nutzung leistungsfähiger Parser, der Muscheln eingebaut haben. Warum kompliziert, wenn es auch ganz einfach sein kann? Wo werden die Konfigurationswerte gespeichert? Warum, wo immer Sie wollen, wie zum Beispiel pkginfo (4) -Dateien oder eine Datenbank wie Oracle oder so ziemlich überall . Keine Notwendigkeit für ultrakomplexe Lösungen. Die Bibliothek , die ich oben erwähnt könnte einfach sein sourced von dem Preinstall oder post Abschnitten in den Betriebssystempaketen, wodurch Duplizierung zu entfernen und einen zentralen Teil des Codes nutzt ...
Vor allem aber stelle ich fest, dass das obige Zitat ein Beispiel für die nächste Generation von Systemadministratoren ist, die nicht von Systemadministratoren, sondern von Systemingenieuren unterrichtet werden müssen . Suchen Sie sich einen Graubart und melden Sie sich als Lehrling an.