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


Vor einem halben Jahr haben wir uns in unserem gemeinnützigen Projekt dazu entschlossen, unser Systemmanagement auf eine Puppet-gesteuerte Umgebung zu migrieren, da wir erwarten, dass unsere Anzahl an Servern zwischen jetzt und einem Jahr erheblich wachsen wird.

Seit der Entscheidung sind unsere IT-Jungs ein bisschen zu genervt. Ihre größten Einwände sind:

  • "Wir sind keine Programmierer, wir sind Systemadministratoren";
  • Module sind online verfügbar, aber viele unterscheiden sich voneinander; Räder werden zu oft neu erfunden, wie entscheidest du dich, was dir passt?
  • Code in unserem Repo ist nicht transparent genug, um herauszufinden, wie etwas funktioniert, müssen sie durch Manifeste und Module rekursieren, die sie vielleicht selbst vor einiger Zeit selbst geschrieben haben;
  • Ein neuer Daemon erfordert das Schreiben eines neuen Moduls, Konventionen müssen ähnlich wie bei anderen Modulen sein, ein schwieriger Prozess;
  • "Lass uns einfach laufen und sehen, wie es funktioniert"
  • Tonnen von kaum bekannten "Erweiterungen" in Community-Modulen: "Troca", "Augeas", "Hiera" ... wie können unsere Systemadministratoren den Überblick behalten?

Ich kann sehen, warum eine große Organisation ihre Systemadministratoren zu Puppet-Kursen schickt, um Marionettenmeister zu werden. Aber wie würden kleinere Spieler Puppet auf ein professionelles Niveau bringen, wenn sie nicht zu Kursen gehen und sie im Grunde über ihren Browser und Editor lernen?


106
2018-06-06 08:38


Ursprung




Antworten:


Ich habe Puppet vor der Bereitstellung einer neuen Infrastruktur verwendet undgeschätzt) Buch über das Thema. Ich glaube nicht, dass die meisten Leute eine professionelle Marionettenausbildung bekommen. Ich habe an Beispielen gearbeitet, bis ich den Prozess an meine Umgebung anpassen konnte. Das war Dezember 2011, also konnte ich innerhalb weniger Wochen die Grundlagen verstehen und einen Produktionsrahmen schaffen. Ich war nicht neu im Konfigurationsmanagement, hatte ein CFEngine Hintergrund, aber viele Sorgen Ihrer Systemadministratoren schwingen mit. Ich habe Fehler gemacht und musste mehrmals umgestalten, aber ich habe die Dinge zufriedenstellend funktionieren sehen.

Ein paar Notizen zu deinen Punkten ...

  • Die traditionelle Systemverwaltungsrolle ändert sich. Anpassen oder zurückgelassen werden. Ich bin ein erfolgreicher Systemtechniker, muss aber auch neu programmieren (zum Beispiel Python lernen). Der Fokus auf einzelne Server wird verringert, da die Hardwareabstraktion durch Virtualisierung und öffentliche und private Cloud-Dienste an Zugkraft gewinnen. Dies bedeutet die Automatisierung von Systemaufgaben und die Verwendung des Konfigurationsmanagements, um die Kontrolle einer größeren Anzahl von Servern zu übernehmen. Hinzufügen DevOps Konzepte zu der Mischung, und Sie werden sehen, dass die Erwartungen der Kunden / Endnutzer und Anforderungen ändern sich.

  • Puppet-Module online verfügbar unterscheiden sich in Stil und Struktur und ja, ich sah viel Überlappung, Redundanz und doppelte Anstrengungen. Ein Entwickler, mit dem ich zusammengearbeitet habe, sagte: "Sie könnten Ihre eigenen Tools in der Zeit entwickelt haben, in der Sie online nach etwas gesucht haben, das funktioniert!" Das ließ mich innehalten, als mir klar wurde, dass Puppet eher an Entwicklertypen appelliert als an Admins, die nach einem suchen Best-Practices oder der richtiger Weg Ansatz.

  • Dokumentieren Sie stark, um ein Gefühl dafür zu bekommen, wie die Dinge miteinander verbunden sind. Angesichts der wackeligen Definitionen und des Fehlens eines Standard Die Konfigurationsstruktur ist wirklich einzigartig für Ihre Umgebung. Diese Transparenz muss innerhalb entwickelt werden.

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

  • Ich habe viel Zeit mit dem Testen eines einzelnen Ziels verbracht, bevor ich Änderungen an größeren Servergruppen vorgenommen habe. Das Ausführen von Puppetd von Hand auf einem repräsentativen Server ermöglichte es mir, Änderungen zu debuggen und deren Auswirkungen zu beurteilen. Vielleicht ist das ein bisschen konservativ, aber es war notwendig.

  • Ich bin mir nicht sicher, wie sehr ich mich auf Community-Module verlassen würde. Ich musste es tun Beginnen Sie mit der Arbeit mit Augeasund beklagte die Tatsache, dass es eine Funktionalität war, die ich in CFAngine als selbstverständlich betrachtete.

Insgesamt habe ich den Eindruck, dass es bei Puppet keinen genau definierten Standard gibt. Ich hatte Probleme herauszufinden, wie ich die Verzeichnisstruktur auf meinem Puppetmaster organisieren und verstehen konnte, wie man Zertifikatssignaturen verwaltet und bekommt richtige Reverse-DNS überall überall, Puppet richtig skalieren zu lassen für die Umwelt und das Verständnis, wann Community-Module genutzt werden, anstatt eigene zu bauen. Es ist eine Verschiebung im Denken und ich sehe, wie das einen Systemadministrator in Panik versetzen würde. Dies war jedoch auch eine von Grund auf neu entwickelte Lösung, so dass ich den Luxus hatte, Tools zu bewerten. Die Entscheidung, diesen Weg zu gehen, basierte auf dem Gedanken und der Dynamik hinter Puppet. Es hat sich gelohnt, etwas Neues zu lernen.

Merken, Diese Seite ist auch eine gute Ressource.


101
2018-06-06 09:02



Ich ging von keiner Erfahrung auf Puppet zu meiner kompletten Umgebung, die in zwei Wochen flach verwaltet wurde. Ich bin verantwortlich für ~ 40 virtuelle Maschinen, obwohl alle Ubuntu laufen. Das hat die Dinge ziemlich vereinfacht. Ich bin ein Entwickler von Beruf. "Adapt oder zurückgelassen werden" - Ich bin jetzt Devops + Sysadmin + Architekt. Ausgezeichnete Antwort! - François Beausoleil
Ich würde ihnen empfehlen, mit der Bereitstellung kleiner Dienste zu beginnen, zuerst im Standalone-Modus und dann an weiteren Servern zu basteln. Ich muss nicht mit Puppet arbeiten, aber ich habe ein kleines VPS und kürzlich habe ich meine eigenen Puppet-Module gemacht. Wenn sie im laufenden Jahrhundert mit den übrigen Systemadministratoren Schritt halten wollen, sollten sie besser aufgeschlossen sein. Ich mache es, weil ich es mag, und ich denke, dass nicht jeder gerne neue Dinge lernt, aber eins ist sicher, heutzutage sind die Systemadministratoren näher an den Entwicklern als je zuvor. - Sergio Galvan
Ich arbeite in einer kleinen Firma und laufe auch puppetd -t zum Testen auf ein paar Boxen, bevor Sie auf alle Server drücken. Es kommt immer wieder vor, dass ein Paar etwas Einzigartiges hat, was dazu führt, dass meine Updates fehlschlagen. Puppet ist viel einfacher, wenn Sie eine kontrollierte und konsistente Umgebung für den Anfang haben. - jordanm
@ewwhite, ich habe mich in den Dokumenten mit dem Puppet-Tutorial durchgearbeitet, habe mich aber gefragt, welches Buch du benutzt hast, um es zu lernen? Ich habe das Gefühl, dass das Tutorial in den Dokumenten etwas vermisse, was alles davor bewahrt, mit mir zu klicken, während ich mit Puppet auf Test-Hosts arbeite, um zu lernen, was ich mache. EDIT: Oder zusätzliche Ressourcen, die Sie empfehlen können. Vielen Dank. - Mike Keller
@MikeKeller Ich mochte es in meinem Beitrag ... Aber es ist hier verfügbar. - ewwhite


Bei einem früheren Job hatte ich die Aufgabe, eine Pilot-Implementierung von Puppet durchzuführen. Jetzt habe ich Programmierhintergrund, aber nicht Ruby, also habe ich nicht so viele Probleme wie andere.

Es ist jedoch interessant zu bemerken, dass Programmierer ohne Erfahrung mit nicht-traditionellen Paradigmen haben auch Probleme mit Puppet, weil Puppet ist deklarativ, nicht zwingend. In diesem Sinne funktioniert Puppet so ziemlich wie jede Konfigurationsdatei: Sie sagen, wie es sein soll, und Puppet kümmert sich um den Rest.

Nach dem Pilotfilm hatte ich die Gelegenheit, ein Dutzend anderer Admins mit Puppet zu trainieren und darüber in zwei Veranstaltungen zu berichten. Ich nehme an, dass einige Admins es übernommen haben, andere nicht. Dies waren alles traditionelle Admins, ohne Programmierkenntnisse und unterschiedlichem Fachwissen.

Eine besondere Sache, die ich bemerkt habe, ist, dass Marionette es erfordert Konstante trainieren. Leute, die trainiert wurden, Module schrieben und dann einen oder zwei Monate damit verbrachten, etwas anderes zu tun, kamen mit wenig nützlichem Geschick zu Puppet zurück. Leute, die jede Woche kleine Dinge darin taten, haben nie die Fähigkeit verloren.

Basierend auf diesen beiden Beobachtungen empfehle ich Ihnen sicherzustellen, dass jeder jede Woche Puppenklasse, Definition oder Modul hinzufügt (vorzugsweise mindestens zwei- oder dreimal). Diejenigen, die sich noch nicht daran gewöhnen können, haben vielleicht nicht die Fähigkeit, es zu tun.

Andererseits, wenn Puppet ihnen von oben auferlegt wurde, reagieren sie vielleicht nur auf das, was sie als ein Management wahrnehmen, das in ihre Arbeit eingreift - was tatsächlich wahr wäre. Es könnte sein, dass sie sich entscheiden lassen welche Konfigurations-Management-System zu verwenden würde Dinge verbessern. Hier sind ein paar alternativen:

  • ANTWORT: Dies ist neu, aber es basiert auf Shell-Kommandos und ssh, was es zu traditionellen Systemadministratoren verleiten könnte.
  • Koch: Vielleicht ist ihr Problem der deklarative Stil, in diesem Fall würde Chef besser sein, wenn sie Erfahrung mit Ruby haben.
  • Salzstapel: Python-basiert und Open-Source
  • CFEngine: alt, schnell, traditionell - es könnte sie auf diesen Gebieten gewinnen.

29
2018-06-06 15:59



Das Schöne an ANSIBLE ist, dass es über galaktische Distanzen ohne Verzögerung in der Datenübertragung funktioniert! - Kalamane
Danke für die ANSIBLE Erwähnung. Bis jetzt war mir das nicht bewusst. - ewwhite
@ewwhite Gern geschehen. Ich selbst habe es erst kürzlich entdeckt, aber viel darüber hat meine Aufmerksamkeit erregt. Wenn wir nicht schon so viel in Puppet hatten, würde ich es definitiv ausprobieren. - Daniel C. Sobral


Ich benutze Puppet seit über zwei Jahren in kleinen Läden, wo 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 nichts vermasselt habe, was ich Entwicklern nicht ein Dutzend Mal gesagt habe. Ich habe zu viel Code eingecheckt, Checkins nicht abgebrochen, ich habe nicht getaggt, ich habe nicht verzweigt, habe den Syntax-Checker nicht ausgeführt, keinen Standard benutzt, usw. Wenn du gerade anfängst Out würde ich einige der folgenden empfehlen.

  1. Stellen Sie fest, dass Sie Software entwickeln, von der Sie entweder gar nicht wissen, dass sie schlecht ist. Dies wird erwartet, weil es neu ist.
  2. Infrastruktur als Code ist die Realität und sobald Sie über den Buckel kommen, ist es ziemlich mächtig. Ich würde einige Entwickler einladen, ihnen ihren aktuellen Entwicklungsprozess (oder deren Fehlen) zeigen, sich nicht beleidigen lassen, wenn sie die Augenbrauen heben, und ihre Vorschläge ernst nehmen. Ich würde empfehlen, jedes System zu verwenden, das von Ihren Entwicklern verwendet wird, es sei denn, es ist völlig unangemessen.
  3. Puppet Third Party Module saugen 90% der Zeit. Ich habe sie gelesen. Ich würde Ideen von ihnen stehlen. Ich würde sie nicht ohne größere Änderungen in mein System ziehen. Allerdings würde ich die Puppe stdlib ziehen, die einige nette Funktionalität hinzufügt.
  4. Augeas und Hiera. Lerne diese zwei. Die erste ermöglicht die komplexe Bearbeitung vorhandener Dateien. Der zweite ist ein externer Datenspeicher.
  5. Trennen Sie den Code von den Daten. Dies ist eines der schwierigeren Konzepte zu lernen. Hardcoding-Werte wie die Überwachung von Hosts in Ihrem Modulcode sind schlecht. Putting sie in einem Datenspeicher (db, yaml (Hiera verwendet dies sein Standard), csv, was auch immer), dass Ihre Module konsumieren kann, ist gut. Ein Beispiel ist eine Webapp, die Mysql verwendet. Was dies ermöglicht, ist die Fähigkeit, Code und Daten getrennt zu übertragen. Dies vereinfacht Ihren Entwicklungsprozess.
  6. Puppenparser validieren und Puppenfussel Als Teil Ihres Pre- oder Post-Code-Check-in-Prozesses. Auch rspec Tests können eine gute Idee sein, sobald Sie auf dem neuesten Stand sind.
  7. Schreibe einen Style Guide / Code Standard und benutze ihn. "Wo ist der Code, der Apache installiert" ist ein häufiges Problem. Wenn Ihre Module weitgehend gleich sind, sollte es einfach sein.

Zusammenfassend habe ich alle diese Probleme getroffen und so haben die meisten meiner Systemadministratoren Freunde. Es wird einige Zeit brauchen, um ein Konfigurationsverwaltungssystem zu verwenden. Sobald Sie das tun, werden Sie sich fragen, wie Sie jemals ohne einen gelebt haben. "Sich bei einem Server anmelden und Änderungen manuell vornehmen? Ick."


11
2018-06-06 18:04



Vielen Dank für Ihre Vorschläge, vor allem für "augeas" und "hiera", zwei Komponenten, die wir implementiert haben. Das hat uns sehr viel bewusster werden lassen und uns sogar auf Puppets Fähigkeiten verlassen. So danke :-) - drumfire


Vor einem halben Jahr haben wir in unserem gemeinnützigen Projekt beschlossen, zu starten   Migration unserer Systemverwaltung in eine Puppet-kontrollierte Umgebung   weil wir erwarten, dass unsere Anzahl von Servern erheblich wachsen wird   zwischen jetzt und einem Jahr von jetzt an.

Klingt wie eine verdammt gute Idee, um früh zu beginnen - Puppet ist mehr als nur Config Management, es ist eine Form der Dokumentation.

Seit der Entscheidung sind unsere IT-Leute ein bisschen geworden   etwas zu oft verärgert.

Sie brauchen eine Einstellung Einstellung.

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

Noch einmal, Haltung. Sie können eine Conf-Datei für einen Server erstellen oder? Sie können die Vorlagen / 'Programmierer'-Sachen nach Bedarf und Komplexität anpassen entwickelt sich.

Module sind online verfügbar, aber viele unterscheiden sich voneinander; Räder   werden zu oft neu erfunden, wie entscheidest du dich, zu welchem ​​passt?   Rechnung;

Schwierig zu beantworten - ich bevorzuge immer die Puppetlabs-Module über die meisten - und selbst das benutze ich nicht so viele. Urteilsspruch sicher. Meiner Meinung nach sind einige Module "zu rüpelhaft".

Code in unserem Repo ist nicht transparent genug, um zu finden, wie etwas funktioniert, das sie durch Manifeste und Module rekrutieren müssen   habe schon vor einiger Zeit selbst geschrieben;

Das klingt nicht nach einem Marionettenproblem, sondern eher nach einem organisatorischen oder dokumentarischen Problem?

Ein neuer Daemon erfordert das Schreiben eines neuen Moduls, Konventionen müssen sein   ähnlich wie andere Module, ein schwieriger Prozess;

Dieser Daemon könnte eine Klasse sein, wenn er einfach genug ist. Ich bin mir nicht sicher, was Sie unter Konventionen verstehen, Marionette erzwingt Konventionen auf Sie, nicht wahr? Oder sprechen wir über die Codeformatierung?

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

Nicht so schlecht von einer Idee, wenn Sie es langsam und sicher nehmen. Ich würde immer noch mit einer VM beginnen, um den Kern der Dinge zu bekommen.

Tonnen von kaum bekannten 'Erweiterungen' in Community-Modulen: 'trocla',   'augeas', 'hiera' ... wie können unsere Systemadministratoren den Überblick behalten?

postfix, exim, sendmail, mysql, postgresql, iftop, ipfr, perl, perlmodule .. Wählen Sie was Sie wollen und benutzen Sie es? Ich schätze, das klingt mehr nach einer Einstellungssache ...

Ich kann sehen, warum eine große Organisation ihre Systemadministratoren zu schicken   Puppenkurse werden Puppetmaster. Aber wie wären kleinere Spieler   Lerne Puppet auf professionellem Niveau zu lernen, wenn sie nicht gehen   Kurse und grundsätzlich lernen sie über ihren Browser und Editor?

Ich habe keine Kurse besucht - während ich bin ein Programmierer mehr als ein Systemadministrator, ich fand, dass es nicht viel Programmierfähigkeit erforderte, um etwas erreicht zu bekommen.

Die Puppet-Dokumentation ist, wenn sie befolgt wird, ziemlich gründlich. Achten Sie nur auf die eingebauten Typen und verbringen Sie einige Zeit damit, zu schauen, wie andere Module zusammengefügt werden. Ich würde nicht sagen, dass es super ist, aber es ist auch nicht hart. Es ist ein bisschen zeitaufwändig, Ihre Infrastruktur für die Marionette bereit zu machen, aber die investierte Zeit ist sicher gut angelegt, wenn Sie expandieren.


7
2018-06-06 14:04



Zur Info: Das kommt von jemandem, der gerade seine Infrastruktur fertiggestellt hat. Ich habe also eine neue Erfahrung und kann nicht sagen, dass es Zeitverschwendung war. - thinice
Als neuer Starter erkläre ich mich selbst ganz in Ihrem Kommentar. - Martijn Heemels
In meinem Fall war eine Einstellungsänderung in der Tat notwendig. Ops lieben Automatisierung und schreiben oft Dinge, daher kommt es vor allem darauf an, verschiedene Werkzeuge zu verwenden. Es ist ein cooles Gefühl, wenn Ihr Puppet-Manifest eine komplette Maschine oder einen neuen Dienst von Grund auf konfiguriert. Die Tatsache, dass sich ein Fehler auf mehrere Computer gleichzeitig auswirken kann, macht es erforderlich, sich an strengere Tests zu gewöhnen, was ärgerlich sein kann, aber offensichtlich eine gute Sache ist. Experimentieren Sie mit Vagrant, Rspec-Puppet, Puppet-Lint, Geppetto, Git-Zweigen und anderen kostenlosen Tools und Sie werden bald Ihren Lieblings-Workflow entdecken. - Martijn Heemels
Die Arbeit mit Puppet hat mir auch geholfen, Ruby zu lernen, welches Bash als meine Standardsprache für Systemwerkzeuge abgelöst hat. - Martijn Heemels


KISS (Keep it einfach dumm) - Verwenden Sie keine neuen Technologien, nur weil sie da sind, weil Sie eine Anforderung für sie haben, verwenden Sie das Minimum, das Ihre Bereitstellung erfordert, aktualisieren Sie bei Bedarf nicht versuchen, mit der Blutung Schritt zu halten Kante. Wenn Sie mit einer grundlegenden Einrichtung beginnen und darauf aufbauen, ist es einfacher, sie abzuholen, und Sie sollten keinen Kurs benötigen (sind diese überhaupt verfügbar?).

Der andere Bereich, den Sie betrachten können, sind Ihre Systemadministratoren. Wenn sie nicht so gut programmieren können, sind sie dann für eine große Implementierung fortgeschritten, in der die meisten Arbeiten mit den von Ihnen verwendeten Werkzeugen geschrieben werden müssen?


5
2018-06-06 09:18



... weil wir erwarten, dass unsere Anzahl an Servern zwischen jetzt und einem Jahr deutlich wachsen wird. Anforderung? - Jeff Ferland
Es hängt wirklich davon ab, wie sicher diese Erwartung ist und ob das, was Sie eingeführt haben, auch dann noch angemessen ist, wenn das Bedürfnis tatsächlich entsteht. - JamesRyan
+1 für "nutze das Nötigste, das dein Deployment benötigt" - Viele der Marionettenprobleme, die ich in den Stamm gelockt habe, indem ich versuche, die Marionettenkontrolle auf dem System zu steuern. - Sirex


Ich arbeite auch für einen gemeinnützigen Zweck und war dafür verantwortlich, zunächst Linux-Boxen im Haus und kurz danach Puppet für deren Verwaltung zu bringen. Es gibt ein paar spezifische Dinge, die wir getan haben Ja wirklich half dabei, die Dinge ins Rollen zu bringen.

In erster Linie habe ich versucht, mich von den Modulen Dritter fernzuhalten. Die integrierten Tools übernehmen 90% unseres Managements. Das größte Drittanbieter-Dienstprogramm, das ich verwende, ist das Firewall-Modul. Alle benutzerdefinierten Fakten usw. werden mit dem gesamten involvierten Team entwickelt. Wir haben ein Template-Modul entwickelt und verwalten die Dateiverwaltung, das Paket, die Services usw. standardisiert von dieser Vorlage.

Zweitens, nachdem wir die eingebauten Module standardisiert hatten, begannen wir mit Git und Atlassian's Crucible - übrigens kostenlos für Non-Profit-Zwecke - um alle Konfigurationsänderungen zu überprüfen. Dies liefert die gewünschte Transparenz.

Drittens habe ich das Setup für Puppet automatisiert, so dass neue Hosts automatisch mit einem Standardsatz von Optionen hinzugefügt werden können. Es gibt mehrere Möglichkeiten, dies zu beheben. Da ich bereits eine komplette Kickstart-Umgebung hatte, entschied ich mich, dort ein Skript hinzuzufügen.


5
2018-06-06 13:50





"Wir sind keine Programmierer, wir sind Systemadministratoren"

Meine Zeiten haben sich geändert, zum Schlechteren: Ein Graubart wie ich war erwartet ein besserer Programmierer zu sein als professionelle Programmierer, oder hätte es nie geschafft, für eine Systemadministrator.

Jetzt haben wir "Systemadministratoren", die im Grunde Windows-Desktop-Benutzer sind, die irgendwann auf Linux umgestellt haben und nicht programmieren können und nichts falsch finden.

Der Elefant im Raum ist der Grund, warum das Management solch eine destruktive Haltung toleriert. Zerstörend für wen oder was? Zum Geschäft und zur Infrastruktur.

Zurück zu Puppet [, CFEngine, Chef] Thema: Sobald man eine solche Lösung einstellt, verliert man. Jeder verliert. Warum? Denn wer immer auf die Idee kommt, kann kein gekapseltes Konfigurationsmanagement in Form von netten, sauberen, Kickstart [, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM] Betriebssystempaketen entwickeln. Wenn Sie ein automatisiertes Hacker-Tool wie Puppet (oder Chef oder CSEngine) verwenden müssen, fehlt Ihnen das nötige Kleingeld Design und zu implementieren Ein Prozess, der durch das gleiche Design völlig unberührte und ausgeleuchtete Systeme erzwingt, vollständig automatisiert und vollständig nicht interaktiv.

Ein weiterer wichtiger Punkt ist, wenn Sie Puppet oder eine solche Lösung haben müssen richtig jemand hacken System- oder Anwendungskonfiguration von Hand, die auch darauf zurückgeht, dass sie nicht die Erfahrung hat, einen Prozess zu entwerfen, und in diesem Prozess ein Framework, in dem die Konfiguration in diskrete Komponenten gepackt wird. In der Tat, wer Puppet und dergleichen implementiert, hat kein Konzept von Komponenteninhabern, Releases, Konfigurationsmanagement, Capability Maturity Model. Dies entwickelt sich schnell zu einem sehr ernsten Problem in der Industrie.

Die Arbeit mit Puppet hat mir auch geholfen, Ruby zu lernen, das Bash als Standardsprache für System-Tools abgelöst hat. "

Warum wird Ruby benötigt, wenn ein umfassendes End-to-End-Konfigurationsmanagement in Vorinstallations-, Postinstall-, Preremove- und Postremove-Abschnitten von Betriebssystempaketen gekapselt werden kann, indem Bourne-Shell-Programme, AWK und sed verwendet werden? Dass jemand so lange lernen würde, eine esoterische Sprache von Ruby zu lernen, und einen Dialekt davon im Kontext von Puppet, ist völlig unnötig. Das Problem des Konfigurationsmanagements ist mit Shell-Programmen und AWK und ein wenig sed (1) hier und da als Leim leicht lösbar (und zwar gelöst).

Es ist ein cooles Gefühl, wenn Ihr Puppet-Manifest eine komplette Maschine oder einen neuen Dienst von Grund auf konfiguriert.

Es ist noch cooler, wenn es von Kickstart, AutoYaST oder JumpStart ausgeführt wird. ohne eine einzige Codezeileund in der Lage sein, das Betriebssystem unter Verwendung abzufragen eingebaute Tools, ohne dass esoterische oder extra Software benötigt wird, keine Client-Server-Architektur erforderlich (SSH ist mehr als in Ordnung, viel mehr als in Ordnung), und sehen, dass Ihr Betriebssystem sich jeder einzelnen Änderung bewusst ist.

5. Trennen Sie den Code von den Daten. Dies ist eines der schwierigeren Konzepte zu lernen. Hardcoding-Werte wie die Überwachung von Hosts in Ihrem Modulcode sind schlecht. Putting sie in einem Datenspeicher (db, yaml (Hiera verwendet dies sein Standard), csv, was auch immer), dass Ihre Module konsumieren kann, ist gut. Ein Beispiel ist eine Webapp, die Mysql verwendet. Was dies ermöglicht, ist die Fähigkeit, Code und Daten getrennt zu übertragen. Dies vereinfacht Ihren Entwicklungsprozess.

... Oder du könntest einfach Vorlage Ihre Konfigurationsdateien mit Shell-Variablen, sogar Backquotes (zum Beispiel ls -1 ...) und schreibe ein Shell-Skript, das AWK verwendet, um eval (1) aufzurufen und alle Variablen in der Vorlage zu erweitern, wodurch der genau gleiche mächtige Parser genutzt wird, den die Shells eingebaut haben. Warum es kompliziert machen, wenn es wirklich, wirklich einfach sein kann? Wo werden Sie die Konfigurationswerte speichern? Warum, wo immer Sie möchten, wie zum Beispiel pkginfo (4) -Dateien oder eine Datenbank wie Oracle, oder so ziemlich irgendwo. Keine Notwendigkeit für ultrakomplexe Lösungen. Die oben erwähnte Bibliothek könnte einfach sein bezogen von den Bereichen "preinstall" oder "postinstall" in den Betriebssystempaketen, wodurch Duplikate entfernt und ein zentrales Stück Code genutzt wird ...

Vor allem aber finde ich, dass das obige Zitat ein Beispiel für die nächste Generation von Systemadministratoren ist, die nicht von Systemadministratoren, sondern von Systemingenieure. Finde einen Greybart und melde dich als Lehrling an.


4
2018-02-11 12:28



Sie scheinen Ihre Antwort auf die Autorenfrage vergessen zu haben. - M. Glatki
Diese Antwort scheint in erster Linie eine Diskussion über Meinungen, Einstellungen und Werkzeuge zu sein und geht nicht wirklich auf die gestellte Frage ein. - JonathanDavidArndt