Wie können die kleinen Jungs Puppet effektiv lernen und anwenden? [geschlossen]


109

Vor einem halben Jahr haben wir in unserem gemeinnützigen Projekt beschlossen, unser Systemmanagement auf eine Puppet-gesteuerte Umgebung umzustellen, da wir davon ausgehen, dass die Anzahl unserer Server von jetzt an bis in ein Jahr erheblich zunehmen wird.

Seit die Entscheidung gefallen ist, sind unsere IT-Mitarbeiter zu oft etwas verärgert. Ihre größten Einwände sind:

  • "Wir sind keine Programmierer, wir sind Sysadmins";
  • Module sind online verfügbar, aber viele unterscheiden sich voneinander. Räder werden zu oft neu erfunden. Wie können Sie entscheiden, welche für Sie in Frage kommt?
  • Der Code in unserem Repo ist nicht transparent genug, um herauszufinden, wie etwas funktioniert, das sie mithilfe von Manifesten und Modulen wiederfinden müssen, die sie möglicherweise vor einiger Zeit selbst geschrieben haben.
  • Ein neuer Daemon erfordert das Schreiben eines neuen Moduls, Konventionen müssen anderen Modulen ähnlich sein, ein schwieriger Prozess.
  • "Lassen Sie es uns einfach laufen und sehen, wie es funktioniert"
  • Unzählige kaum bekannte 'Erweiterungen' in Community-Modulen: 'trocla', 'augeas', 'hiera' ... wie können unsere Sysadmins den Überblick behalten?

Ich kann sehen, warum eine große Organisation ihre Sysadmins zu Puppenkursen entsendet, um Puppenmeister zu werden. Aber wie können kleinere Spieler Puppet auf professionellem Niveau lernen, wenn sie nicht zu Kursen gehen und es im Grunde über ihren Browser und Editor lernen?

Antworten:


101

Ich habe Puppet bereits vor der Bereitstellung einer neuen Infrastruktur verwendet und mir einfach ein ( angesehenes ) Buch zu diesem Thema gekauft. Ich glaube nicht, dass die meisten Leute tatsächlich eine professionelle Puppenausbildung erhalten. Ich habe an Beispielen gearbeitet, bis ich den Prozess an meine Umgebung anpassen konnte. Es war Dezember 2011, also konnte ich innerhalb weniger Wochen die Grundlagen verstehen und einen Produktionsrahmen schaffen. Ich war kein Neuling in der Konfigurationsverwaltung mit CFEngine- Hintergrund, aber viele der Bedenken Ihrer Systemadministratoren stimmen überein . Ich habe Fehler gemacht und musste einige Male umgestalten, aber ich habe die Dinge zufriedenstellend zum Laufen gebracht.

Ein paar Anmerkungen zu Ihren Punkten ...

  • Die traditionelle Rolle der Systemadministration ändert sich. Anpassen oder zurückgelassen werden. Ich war ein erfolgreicher Systemingenieur, muss aber auch umrüsten (zum Beispiel Python lernen). Der Fokus auf einzelne Server wird verringert, da die Hardwareabstraktion durch Virtualisierung und öffentliche und private Cloud-Dienste an Bedeutung gewinnen. Dies bedeutet die Automatisierung von Systemaufgaben und die Verwendung von Konfigurationsmanagement, um einer größeren Anzahl von Servern die Kontrolle zu entreißen. In DevOps Konzepte auf die Mischung, und Sie werden sehen , dass die Kunden / Endbenutzers Erwartungen und Anforderungen ändern sich .

  • Die online verfügbaren Puppet-Module unterscheiden sich in Stil und Struktur und ja, ich habe viele Überschneidungen, Redundanzen und doppelte Anstrengungen gesehen. Ein Entwickler, mit dem ich zusammengearbeitet habe, sagte: "Sie hätten in der Zeit, in der Sie online nach etwas gesucht haben, das funktioniert, Ihre eigenen Tools entwickeln können!" Das gab mir eine Pause, als mir klar wurde, dass Puppet eher Entwicklertypen als Administratoren anspricht, die nach Best Practices oder dem richtigen Ansatz suchen .

  • Dokumentieren Sie intensiv, um ein Gefühl dafür zu bekommen, wie die Dinge miteinander verbunden sind. Angesichts der unsicheren Definitionen und des Fehlens einer Standardmethode ist Ihre Konfigurationsverwaltungsstruktur in Ihrer Umgebung wirklich einzigartig. Diese Transparenz muss innerhalb von entwickelt werden.

  • Ich würde argumentieren, dass es relativ einfach ist, ein Modul zu duplizieren, um einen neuen Dämon aufzunehmen oder einem vorhandenen Manifest einen Dienst hinzuzufügen, je nachdem, wie Sie Ihre Server und Rollen organisiert haben.

  • Ich habe viel Zeit mit dem Testen eines einzelnen Ziels verbracht, bevor Änderungen auf größere Servergruppen übertragen wurden. Das Ausführen von puppetd von Hand auf einem repräsentativen Server ermöglichte es mir, Änderungen zu debuggen und ihre Auswirkungen zu bewerten. Vielleicht ist das ein bisschen konservativ, aber es war notwendig.

  • Ich bin mir nicht sicher, wie sehr ich von Community-Modulen abhängen würde. Ich musste Augeas für einige Arbeiten einsetzen und beklagte die Tatsache, dass dies eine Funktionalität war, die ich in CFEngine für selbstverständlich hielt.

Insgesamt glaube ich, dass es in Bezug auf Puppet keinen genau definierten Standard gibt. Ich hatte Probleme damit, die Verzeichnisstruktur auf meinem Puppetmaster zu organisieren, zu verstehen, wie die Zertifikatsignierung verwaltet wird, wie man überall das richtige Reverse-DNS einrichtet, wie man Puppet an die Umgebung anpasst und wann man Community-Module besser einsetzen kann als meine eigenen. Es ist ein Umdenken und ich sehe, wie das eine Sysadmin-Panik auslösen würde. Diese Lösung wurde jedoch ebenfalls von Grund auf neu entwickelt, sodass ich den Luxus hatte, Tools zu evaluieren. Die Entscheidung, diesen Weg zu gehen, basierte auf Mindshare und der Dynamik hinter Puppet. Es hat sich gelohnt, etwas Neues zu lernen.

Denken Sie daran, diese Seite ist auch eine gute Ressource.


20
Ich habe keine Erfahrung mit Puppet und habe meine gesamte Umgebung in zwei Wochen verwaltet. Ich bin für ~ 40 virtuelle Maschinen verantwortlich, obwohl alle Ubuntu ausführen. Das hat die Sache ziemlich vereinfacht. Ich bin von Beruf Entwickler. "Anpassen oder zurückgelassen werden" - Ich bin jetzt Entwickler + Systemadministrator + Architekt. Hervorragende Antwort!
François Beausoleil

Ich würde ihnen empfehlen, mit der Bereitstellung kleiner Dienste zu beginnen, zunächst als Einzelanwendung, dann mit dem Basteln mit mehr Servern. Ich muss nicht mit Puppet arbeiten, aber ich habe ein kleines VPS und vor kurzem habe ich meine eigenen Puppet-Module erstellt. Wenn sie im laufenden Jahrhundert mit dem Rest der Sysadmins mithalten wollen, sollten sie aufgeschlossener sein. Ich mache das, weil ich es mag und ich denke, nicht jeder lernt gerne neue Dinge, aber eines ist sicher, heutzutage sind Sysadmins den Entwicklern näher als je zuvor.
Sergio Galvan

2
Ich arbeite in einer kleinen Firma und laufe auch puppetd -tzum Testen auf ein paar Boxen, bevor ich auf alle Server pushe. Es scheitert nie, dass ein Paar etwas Einzigartiges hat, das dazu führt, dass meine Updates auf ihnen fehlschlagen. Marionette ist viel einfacher, wenn Sie für den Anfang eine kontrollierte und konsistente Umgebung haben.
Jordan

1
@ewwhite, ich habe das Puppet-Tutorial in ihren Dokumenten durchgearbeitet, mich aber gefragt, welches Buch Sie beim Lernen verwendet haben? Ich habe das Gefühl, dass in dem in den Dokumenten enthaltenen Tutorial etwas fehlt, das alles daran hindert, mit mir zu klicken, während ich mit Puppet an Test-Hosts arbeite, um zu erfahren, was ich tue. BEARBEITEN: Oder zusätzliche Ressourcen, die Sie empfehlen können. Vielen Dank.
Mike Keller

1
@ MikeKeller Ich mochte es in meinem Beitrag ... Aber es ist hier verfügbar .
ewwhite

29

Bei einem früheren Job wurde mir die Aufgabe übertragen, eine Pilotimplementierung von Puppet durchzuführen. Jetzt habe ich Programmierhintergrund, aber nicht Ruby, also habe ich nicht so viele Probleme wie andere.

Es ist jedoch interessant festzustellen, dass Programmierer ohne Erfahrung mit nicht-traditionellen Paradigmen auch Probleme mit Puppet haben, da Puppet deklarativ und nicht imperativ ist. In diesem Sinne funktioniert Puppet so ziemlich wie jede Konfigurationsdatei: Sie sagen, wie die Dinge sein sollen, und Puppet kümmert sich um den Rest.

Nach dem Piloten hatte ich die Gelegenheit, ein Dutzend weiterer Admins mit Puppet auszubilden und in zwei Veranstaltungen Präsentationen darüber zu halten. Aus dieser Erfahrung habe ich genommen, dass einige Admins das gemacht haben und andere nicht. Dies waren alles traditionelle Administratoren ohne Programmierkenntnisse und mit unterschiedlichem Fachwissen.

Eine besondere Sache, die mir aufgefallen ist, ist, dass Puppet ständiges Üben erfordert . Leute, die ausgebildet wurden, Module schrieben und dann einen oder zwei Monate damit verbrachten, etwas anderes zu tun, kehrten mit wenig nützlichem Geschick zu Puppet zurück. Leute, die jede Woche kleine Dinge darin machten, verloren nie die Fähigkeit.

Aufgrund dieser beiden Beobachtungen empfehle ich, dass Sie sicherstellen, dass jeder jede Woche eine Marionettenklasse, -definition oder -modul hinzufügt (vorzugsweise mindestens zwei- oder dreimal). Diejenigen, die sich immer noch nicht daran gewöhnen können, verfügen möglicherweise nicht über die entsprechenden Fähigkeiten.

Andererseits, wenn Puppet ihnen von oben auferlegt würde, könnten sie einfach auf das reagieren, was sie als Management wahrnehmen, das in die Art und Weise, wie sie ihre Arbeit erledigen, eingreift - was in der Tat wahr genug wäre. Es könnte der Fall sein , dass sie im Stich gelassen wählen , welches Konfigurations - Management - System würde die Dinge verbessern verwenden. Hier sind ein paar alternativen:

  • Ansible : Das ist neu, aber es basiert auf Shell - Befehle und ssh, die es zu den traditionellen sysadmins locken könnten.
  • Chefkoch : Vielleicht ist ihr Problem der deklarative Stil. In diesem Fall ist der Chefkoch besser, wenn er über Ruby-Erfahrung verfügt.
  • SaltStack : Python-basiert und Open Source
  • CFEngine : alt, schnell, traditionell - es könnte sie aus diesen Gründen überzeugen .

12
Das Schöne an ANSIBLE ist, dass es über galaktische Distanzen absolut ohne Verzögerung bei der Datenübertragung funktioniert!
Kalamane,

1
Vielen Dank für die ANSIBLE Erwähnung. Ich war mir dessen bis jetzt nicht bewusst.
ewwhite

@ewwhite Gern geschehen. Ich selbst habe es erst kürzlich entdeckt, aber viel davon hat meine Aufmerksamkeit erregt. Wenn wir nicht schon so viel in Puppet gehabt hätten, würde ich es definitiv ausprobieren.
Daniel C. Sobral

11

Ich benutze Puppet seit etwas mehr als zwei Jahren in kleinen Läden, in denen ich der einzige Systemadministrator war. Die größte Hürde, die ich hatte, ist zu lernen, wie man Software richtig entwickelt. Es war keine Woche vergangen, in der ich etwas vermasselt hatte, von dem ich den Entwicklern geraten hatte, es nicht ein Dutzend Mal zu tun. Ich habe zu viel Code eingecheckt, Checkins nicht getrennt, keine Tags vergeben, keine Verzweigungen durchgeführt, keine Syntaxprüfung durchgeführt, keinen Standard verwendet usw. Wenn Sie gerade erst anfangen Ich würde einige der folgenden empfehlen.

  1. Stellen Sie fest, dass Sie Software entwickeln, die Sie entweder nicht beherrschen oder nicht richtig einsetzen können. Dies wird erwartet, weil es neu ist.
  2. Infrastruktur als Code ist die Realität und sobald Sie den Buckel überwunden haben, ist sie ziemlich leistungsfähig. Ich lade einige Entwickler ein, zeige ihnen ihren aktuellen Entwicklungsprozess (oder einen Mangel daran), beleidige sie nicht, wenn sie die Augenbrauen hochziehen, und nehme ihre Vorschläge ernst. Ich würde empfehlen, jedes System und Verfahren zu verwenden, das Ihre Entwickler verwenden, es sei denn, es ist völlig unangemessen.
  3. Puppet-Module von Drittanbietern saugen 90% der Zeit. Ich würde sie lesen. Ich würde ihnen Ideen stehlen. Ich würde sie nicht ohne größere Änderungen in mein System ziehen. Allerdings würde ich die Puppe stdlib reinziehen, die einige nette Funktionen hinzufügt.
  4. Augeas und Hiera. Lerne die beiden. Die erste ermöglicht die komplexe Bearbeitung vorhandener Dateien. Der zweite ist ein externer Datenspeicher.
  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.
  6. Marionette Parser validate und Puppen Flusen von Ihnen vor oder Postleitzahl checkin Prozess als Teil. Rspec-Tests könnten auch eine gute Idee sein, wenn Sie auf dem Laufenden sind.
  7. schreibe einen Styleguide / Code Standard und benutze ihn. "wo ist der Code, der Apache installiert" ist ein häufiges Problem. Wenn Ihre Module größtenteils gleich sind, sollte es einfach sein.

Zusammenfassend habe ich all diese Probleme und auch die meisten meiner Sysadmin-Freunde getroffen. Es wird einige Zeit dauern, bis Sie mit einem Konfigurationsmanagementsystem vertraut sind. Sobald Sie dies tun, werden Sie sich fragen, wie Sie jemals ohne einen gelebt haben. "Bei einem Server anmelden und Änderungen manuell vornehmen? Ick."


Vielen Dank für Ihre Vorschläge, insbesondere Augeas und Hiera sind zwei Komponenten, mit deren Implementierung wir begonnen haben. Dies hat uns viel bewusster gemacht und uns sogar der Fähigkeiten von Puppet sicher gemacht. Also danke :-)
Trommelfeuer

7

Vor einem halben Jahr haben wir in unserem gemeinnützigen Projekt beschlossen, unser Systemmanagement auf eine Puppet-gesteuerte Umgebung umzustellen, da wir davon ausgehen, dass die Anzahl unserer Server von jetzt an bis in ein Jahr erheblich zunehmen wird.

Klingt nach einer verdammt guten Idee, früh zu beginnen - Puppet ist mehr als nur Konfigurationsverwaltung, es ist eine Form der Dokumentation.

Seit die Entscheidung gefallen ist, sind unsere IT-Mitarbeiter zu oft etwas verärgert.

Sie brauchen eine Einstellungseinstellung.

"We're not programmers, we're sysadmins";

Wieder Haltung. Sie können eine Conf-Datei für einen Server erstellen, oder? Sie können sich mit der Entwicklung Ihrer Anforderungen und Komplexität in das Templating / Programmierer-Zeug einarbeiten .

Module sind online verfügbar, aber viele unterscheiden sich voneinander. Räder werden zu oft neu erfunden. Wie können Sie entscheiden, welche für Sie in Frage kommt?

Schwierig zu beantworten - ich bevorzuge immer die Puppetlabs-Module gegenüber den meisten - und selbst dabei verwende ich nicht so viele. Urteilsspruch sicher. Meiner Meinung nach sind einige Module zu unübersichtlich.

Der Code in unserem Repo ist nicht transparent genug, um herauszufinden, wie etwas funktioniert, das sie mithilfe von Manifesten und Modulen wiederfinden müssen, die sie möglicherweise vor einiger Zeit selbst geschrieben haben.

Das hört sich nicht nach einem Marionettenproblem an, sondern eher nach einem Organisations- oder Dokumentationsproblem?

Ein neuer Daemon erfordert das Schreiben eines neuen Moduls, Konventionen müssen anderen Modulen ähnlich sein, ein schwieriger Prozess.

Dieser Daemon könnte eine Klasse sein, wenn es einfach genug ist, ihn zu verwalten. Ich bin mir nicht sicher, was Sie unter Konventionen verstehen, Marionette setzt Ihnen Konventionen ziemlich gut durch, nicht wahr? Oder sprechen wir von der Formatierung des Codes?

"Let's just run it and see how it works"

Keine schlechte Idee, wenn Sie es langsam und sicher angehen. Ich würde immer noch mit einer VM beginnen, um den Kern der Dinge zu verstehen.

Unzählige kaum bekannte 'Erweiterungen' in Community-Modulen: 'trocla', 'augeas', 'hiera' ... wie können unsere Sysadmins den Überblick behalten?

postfix, exim, sendmail, mysql, postgresql, iftop, iptraf, perl, perl module Ich denke, das klingt wieder eher nach einer Einstellungssache ...

Ich kann sehen, warum eine große Organisation ihre Sysadmins zu Puppenkursen entsendet, um Puppenmeister zu werden. Aber wie können kleinere Spieler Puppet auf professionellem Niveau lernen, wenn sie nicht zu Kursen gehen und es im Grunde über ihren Browser und Editor lernen?

Ich habe keine Kurse besucht - obwohl ich ein Programmierer bin, der mehr als ein Systemadministrator ist, brauchte ich nicht viel Programmierkenntnisse, um etwas zu erreichen.

Die Puppet-Dokumentation ist, wenn sie befolgt wird, ziemlich gründlich. Achten Sie einfach auf die eingebauten Typen und schauen Sie sich an, wie andere Module zusammengesetzt werden. Ich würde nicht sagen, dass es super einfach ist, aber es ist auch nicht schwer. Es ist ein bisschen zeitaufwändig, Ihre Infrastruktur für Puppet vorzubereiten, aber die investierte Zeit ist sicher gut angelegt, wenn Sie expandieren.


Zu Ihrer Information, dies kommt von jemandem, der seine Infrastruktur gerade fertiggestellt hat. Ich habe also eine neue Erfahrung und kann nicht sagen, dass es Zeitverschwendung war.
Thinice

Als Neuling erkenne ich mich ganz in Ihrem Kommentar.
Martijn Heemels

1
In meinem Fall war in der Tat eine Änderung der Einstellung notwendig. Ops lieben Automatisierung und schreiben oft Dinge, daher ist es meistens eine Frage der Verwendung verschiedener Tools. Es ist ein cooles Gefühl zu sehen, wie Ihr Puppet eine ganze Maschine oder einen neuen Service von Grund auf neu konfiguriert. Die Tatsache, dass sich ein Fehler auf mehrere Computer gleichzeitig auswirken kann, erfordert eine Gewöhnung an strengere Tests, was ärgerlich sein kann, aber offensichtlich eine gute Sache ist. Wenn Sie mit Vagrant, rspec-puppet, puppet-lint, Geppetto, Git-Zweigen und anderen kostenlosen Tools experimentieren, werden Sie bald Ihren Lieblingsworkflow entdecken.
Martijn Heemels

1
Die Arbeit mit Puppet hat mir auch geholfen, Ruby zu lernen, das Bash als meine Standardsprache für Systemtools ersetzt.
Martijn Heemels

5

KISS (Halten Sie es einfach dumm) - Verwenden Sie keine neuen Technologien, nur weil sie vorhanden sind, sondern weil Sie eine Anforderung für sie haben. Verwenden Sie das Nötigste, das für Ihre Bereitstellung erforderlich ist. Aktualisieren Sie sie nach Bedarf Kante. Wenn Sie mit einer Grundkonfiguration beginnen und darauf aufbauen, ist es einfacher, diese zu erlernen, und sie sollten keinen Kurs benötigen (sind diese überhaupt verfügbar?).

Der andere Bereich, den Sie betrachten können, sind Ihre Sysadmins. Wenn sie nicht so gut programmieren können, sind sie dann für eine umfangreiche Bereitstellung weit genug fortgeschritten, bei der der größte Teil der Arbeit mit Skripten ausgeführt werden muss, unabhängig von den von Ihnen verwendeten Tools?


4
... weil wir davon ausgehen, dass die Anzahl unserer Server von jetzt an bis in ein Jahr erheblich ansteigen wird. Anforderung?
Jeff Ferland

1
Es kommt wirklich darauf an, wie sicher diese Erwartung ist und ob das, was Sie setzen, zum Zeitpunkt der tatsächlichen Notwendigkeit noch geeignet ist.
James Ryan

+1 für "Verwenden Sie das Nötigste, das für Ihre Bereitstellung erforderlich ist" - Viele der Puppenprobleme, auf die ich gestoßen bin, sind darauf zurückzuführen, dass Puppen alles auf dem System kontrollieren.
Sirex

5

Ich arbeite auch für gemeinnützige Organisationen und war dafür verantwortlich, Linux-Boxen zunächst ins Haus zu holen und kurz darauf Puppet, um sie zu verwalten. Wir haben ein paar spezifische Dinge getan, die wirklich geholfen haben, die Dinge ins Rollen zu bringen.

In erster Linie habe ich versucht, mich von den Fremdmodulen fernzuhalten. Die eingebauten Werkzeuge übernehmen 90% unseres Managements. Das größte Dienstprogramm von Drittanbietern, das ich verwende, ist das Firewall-Modul. Alle benutzerdefinierten Fakten usw. werden mit dem gesamten beteiligten Team entwickelt. Wir haben ein Vorlagenmodul entwickelt und die Dateiverwaltung, das Paket, die Dienste usw. von dieser Vorlage ferngehalten.

Zweitens haben wir nach der Standardisierung der Verwendung der eingebauten Module damit begonnen, Git und Atlassian's Crucible zu verwenden - übrigens kostenlos für gemeinnützige Zwecke -, um alle Konfigurationsänderungen zu überprüfen. Dies liefert die gewünschte Transparenz.

Drittens habe ich das Setup für Puppet automatisiert, sodass neue Hosts automatisch mit einer Reihe von Standardoptionen hinzugefügt werden können. Es gibt verschiedene Möglichkeiten, dies zu beheben. Da ich bereits eine vollständige Kickstart-Umgebung hatte, habe ich mich dafür entschieden, dort ein Skript hinzuzufügen.


4

"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.


1
Sie scheinen Ihre Antwort auf die Frage des Autors vergessen zu haben.
M. Glatki

Diese Antwort scheint in erster Linie eine Diskussion über Meinungen, Einstellungen und Instrumente zu sein und geht nicht wirklich auf die gestellte Frage ein.
JonathanDavidArndt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.