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.
puppetd -t
zum 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.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:
quelle
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.
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."
quelle
Klingt nach einer verdammt guten Idee, früh zu beginnen - Puppet ist mehr als nur Konfigurationsverwaltung, es ist eine Form der Dokumentation.
Sie brauchen eine Einstellungseinstellung.
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 .
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.
Das hört sich nicht nach einem Marionettenproblem an, sondern eher nach einem Organisations- oder Dokumentationsproblem?
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?
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.
postfix, exim, sendmail, mysql, postgresql, iftop, iptraf, perl, perl module Ich denke, das klingt wieder eher nach einer Einstellungssache ...
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.
quelle
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?
quelle
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.
quelle
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.
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.
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.
... 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.
quelle