Stellen Sie sich vor, Sie verwalten mehrere Server mit verschiedenen Diensten, die von mehreren Personen verwendet werden. Angenommen, Sie möchten eine Software auf einem dieser Server neu konfigurieren oder ersetzen. Natürlich möchten Sie nicht auf Servern arbeiten, die sich in Produktion befinden.
Wenn dies eine Codeänderung wäre, würde ich als Entwickler die Änderung auf meinem lokalen Entwicklungscomputer vornehmen, lokal testen und die Änderung auf ein Versionskontrollsystem übertragen. Die Änderungen könnten dann in einer Staging-Umgebung bereitgestellt, weiter getestet und schließlich in einer Produktionsumgebung bereitgestellt werden. Es würde mir auch leicht fallen, bei Bedarf ein Rollback durchzuführen.
Allgemein oder speziell, wie erreichen Sie dies in der Systemadministration?
(Das erste, was mir einfällt, ist die Verwendung virtueller Maschinen und das Versionskontrollieren von Images virtueller Maschinen. Ich bin mir jedoch sicher, dass es eine Menge Literatur und clevere Lösungen gibt, die mir derzeit nicht bekannt sind.)
Antworten:
Die kurze Antwort lautet "OS Deployment Management", "Configuration Management" und "Software Packaging". Es folgt eine lange Antwort.
Ich möchte Daniel Pittmans Antwort mit einer Aufschlüsselung dessen ergänzen, was ein "System" in der Systemadministration ausmacht.
Ein System oder eine Umgebung besteht aus:
Umhüllende diese werden Prozesse wie:
Und Sie möchten diese kombinieren, um nicht-funktionale Ziele zu erreichen, wie zum Beispiel:
Dies ist eine schnelle Gehirnerschütterung. Ich bin sicher, dass allen Listen mehr hinzugefügt werden könnte.
Ihre Frage berührt einige davon, ohne die spezifischen Wörter zu verwenden. Zum Beispiel möchten Sie in der Lage sein, einfach bereitzustellen und zurückzugelangen, dh Wartbarkeit wünschen; Sie möchten es in einer Testumgebung durchführen und testen, bis es bestanden ist, dh Wiederholbarkeit, Testbarkeit und Messbarkeit. Sie möchten VM-Images in die Versionskontrolle aufnehmen, weil Sie die Wiederholbarkeit von Betriebssystem- und Konfigurationsbereitstellungen wünschen.
Es gibt viele Tools, die Sie dabei unterstützen, von denen einige von Daniel erwähnt wurden. Einige andere sind:
Auch dies ist keine umfassende Liste, aber etwas, das ich im Kopf habe, um mich anzuleiten, und hoffentlich hilft es Ihnen auch.
quelle
Haftungsausschluss: Ich bin einer der Entwickler von Puppet.
Der naheliegende Weg besteht darin, die Konzepte einfach anzuwenden: einen Entwicklungs- / Test- / Produktionszyklus zu definieren und Änderungen durchzusetzen. Verwenden Sie die Versionskontrolle, um Systeme zu verfolgen.
Wenn Sie diesen Weg beschreiten, stellen Sie in Kürze fest, dass Sie wirklich Tools benötigen, die diese Dinge automatisieren. Im Wesentlichen möchten Sie die Systemadministration automatisieren, damit Sie diese Techniken nicht auf Computern anwenden, sondern auf dem betreffenden System verwaltet die Maschinen.
Werkzeuge wie Chefkoch , Marionette , Salz und CFEngine sind beliebte Tools, um diesen zweiten Bedarf zu decken . Sie arbeiten im Allgemeinen so, dass die Systemadministration zu einer zentralen Lösung wird, die Sie versionieren und testen können.
Die DevOps- Bewegung ist eine weitere Quelle guter Informationen dazu. Das Gebot ist zwar eine bessere Zusammenarbeit zwischen Entwicklern und Betriebsmitarbeitern, geht aber auch in dieselbe Richtung.
quelle
In einer Windows-Welt werden diese Probleme im Zusammenhang mit der Verwaltung des Anwendungslebenszyklus mit System Center 2012 behoben.
In System Center Virtual Machine Manager (SCVMM) werden Dienste mithilfe von "Dienstvorlagen" (z. B. ein klassischer dreistufiger Dienst) definiert, und Ausführungsumgebungen werden als "Clouds" (z. B. Entwicklung, Bereitstellung, Produktion) definiert. Service-Vorlagen können versioniert und (automatisiert) in verschiedenen Clouds bereitgestellt werden. SCVMM übernimmt die Bereitstellung, Bereitstellung und Konfiguration der virtualisierten Hardware (VMs usw.) und Software (Betriebssystem, App-Komponenten usw.).
System Center Service Manager ist das Teil, das dies aus Prozesssicht zusammenbringt. Zum Beispiel das Issue Management und die Änderungskontrolle.
quelle