Wie wenden Sie Entwicklungsverfahren wie Versionskontrolle, Testen und kontinuierliche Integration / Bereitstellung auf die Systemadministration an?

18

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

arex1337
quelle
Fragen Sie nach technischen Tools oder nach Frameworks für die Verwaltung solcher Dinge? Weil es schwierig wäre, über die letztere Option zu sprechen, ohne Dinge wie Change- und Release-Management aus der ITIL-Disziplin zu erwähnen.
Rob Moir
@ DJPon3 Ich würde gerne etwas über den allgemeinen Ansatz (wie denken Sie darüber nach) und die Tools dafür erfahren. Fühlen Sie sich frei, meinen letzten Absatz als Ausgangspunkt zu verwenden.
Arex1337

Antworten:

15

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:

  • Server
  • Betriebssystem
  • Aufbau
  • Vendor-Pakete; und
  • Lokale Pakete

Umhüllende diese werden Prozesse wie:

  • Betriebssystembereitstellung oder Imaging
  • Konfigurationsmanagement
  • Softwarepaketverwaltung
  • Auditing / Protokollierung
  • Überwachung
  • Backups

Und Sie möchten diese kombinieren, um nicht-funktionale Ziele zu erreichen, wie zum Beispiel:

  • Wiederholbarkeit
  • Wartbarkeit
  • Messbarkeit
  • Performance
  • Verfolgbarkeit
  • Testbarkeit
  • Veränderlichkeit

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:

  • Kickstarts (RedHat-basiert), Preseed (Debian-basiert), WDS (MS Windows) für die Bereitstellung bekannter Betriebssystemumgebungen
  • Spacewalk / Satellite (RedHat-basiert), Gruppenrichtlinien (MS Windows) für Konfiguration und Paketverwaltung
  • YUM- und APT-Paketsysteme zum Generieren, Bereitstellen, Aktualisieren und Entfernen von Paketen (Sätze von Binärdateien, Daten und Konfigurationen, die eine Software umfassen)
  • Nagios, OpenNMS und SCOM zur Überwachung
  • Amanda, Bacula und Windows Backup Server für Backups
  • Munin, PCP und Hyperic zur Leistungsüberwachung
  • CVS, SVN, GIT oder Bazaar für die Versionskontrolle
  • Hudson und Jenkins für das Build Management
  • Selen und Roboter zum Testen
  • Bugzilla, Request Tracker und Jira für Aufnahme, Kommunikation und Tracking

Auch dies ist keine umfassende Liste, aber etwas, das ich im Kopf habe, um mich anzuleiten, und hoffentlich hilft es Ihnen auch.

Nearora
quelle
Was ist Marvin? Ich kann keinen Verweis darauf finden, oder ist das ein Tippfehler?
thelsdj
s / Marvin / Hudson / - Danke, dass Sie @thelsdj entdeckt haben :-)
Nearora
16

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.

Daniel Pittman
quelle
15
Jetzt wissen wir, wen wir wegen unserer Marionettenfragen belästigen müssen ...
ewwhite
1

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.

Richard B
quelle