Lösung 1:
Haftungsausschluss:Ich bin einer der Entwickler von Puppet.
Der naheliegende Weg besteht darin, einfach die Konzepte anzuwenden:einen Entwicklungs-/Test-/Produktionszyklus zu definieren und Änderungen durchzusetzen. Verwenden Sie die Versionskontrolle, um Systeme zu verfolgen.
Wenn Sie diesen Weg einschlagen, entdecken Sie in kurzer Zeit, dass Sie wirklich Tools wollen, die diese Dinge automatisieren - im Wesentlichen, dass Sie die Systemverwaltung automatisieren möchten, sodass Sie diese Techniken nicht auf Maschinen verwenden, sondern auf dem System verwaltet die Maschinen.
Tools wie Chef, Puppet, Salt und CFEngine sind allesamt beliebte Tools, um diesen zweiten Bedarf zu decken. Sie arbeiten in der allgemeinen Richtung, die Systemverwaltung in eine zentrale Lösung zu verwandeln, die Sie versionieren und testen können.
Die DevOps-Bewegung ist eine weitere Quelle für gute Informationen dazu, wie dies zu tun ist. Während das Gebot eine bessere Zusammenarbeit zwischen Entwicklern und Betriebsmitarbeitern ist, tendiert es auch in die gleiche Richtung.
Lösung 2:
Die kurze Antwort lautet „OS Deployment Management“, „Configuration Management“ und „Software Packaging“. Lange Antwort folgt.
Ich möchte Daniel Pittmans Antwort mit einer Aufschlüsselung ergänzen, was ein "System" in der Systemadministration ausmacht.
Ein System oder eine Umgebung besteht aus:
- Server
- Betriebssystem
- Konfiguration
- Lieferantenpakete; und
- Lokale Pakete
Umhüllt werden diese von Prozessen wie:
- OS-Bereitstellung oder -Imaging
- Konfigurationsverwaltung
- Verwaltung von Softwarepaketen
- Prüfung/Protokollierung
- Überwachung
- Sicherungen
Und Sie möchten, dass diese kombiniert werden, um Sie beim Erreichen nicht-funktionaler Ziele zu unterstützen, wie z. B.:
- Wiederholbarkeit
- Wartbarkeit
- Messbarkeit
- Leistung
- Verfolgbarkeit
- Testbarkeit
- Änderbarkeit
Dies ist ein schneller Brain-Dump. Ich bin sicher, dass allen Listen weitere hinzugefügt werden könnten.
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ückzukehren, d. h. Wartbarkeit wünschen; Sie möchten es in einer Testumgebung tun und testen, bis es bestanden ist, dh Wiederholbarkeit, Testbarkeit und Messbarkeit; Sie denken darüber nach, VM-Images in die Versionskontrolle aufzunehmen, weil Sie die Wiederholbarkeit von Betriebssystem- und Konfigurationsbereitstellungen wünschen.
Es gibt viele Tools, die Ihnen dabei helfen, einige davon wurden von Daniel erwähnt. Einige andere sind:
- Kickstarts (auf RedHat basierend), Preseed (auf Debian basierend), WDS (MS Windows) zum Bereitstellen bekannter Betriebssystemumgebungen
- Spacewalk/Satellite (auf RedHat basierend), 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 ein Stück Software umfassen)
- Nagios, OpenNMS und SCOM für die Überwachung
- Amanda, Bacula und Windows Backup Server für Backups
- Munin, PCP und Hyperic zur Leistungsüberwachung
- CVS, SVN, GIT oder Bazaar zur Versionskontrolle
- Hudson und Jenkins für Build-Management
- Selenium und Robot zum Testen
- Bugzilla, Request Tracker und Jira zur Aufzeichnung, Kommunikation und Verfolgung
Auch dies ist keine vollständige Liste, sondern etwas, das ich in meinem Kopf behalte, um mich zu leiten und hoffentlich auch Ihnen zu helfen.