Das Konzept, das Sie beschreiben, ist das Konfigurationsmanagement. Dies ist, wie es sich anhört, eine Möglichkeit, eine Umgebung zu identifizieren, aufzuzeichnen, zu versionieren / zu verfolgen und zu melden. Es handelt sich häufig um eine Aufgabe, die in engem Zusammenhang mit der Versionskontrolle und dem Build-Management steht, die jedoch häufig eine separate Strategie erfordert, selbst wenn dieselben Konzepte und dieselben Verarbeitungs- und Speichermechanismen verwendet werden.
Das Konfigurationsmanagement hilft nicht nur dabei, die Arbeitsumgebung unter Kontrolle zu halten, sondern auch, Aufzeichnungen über die verschiedenen Arbeitsumgebungen zu erstellen, in denen Software verwendet wird (Entwicklung wie erwähnt, plus Tests / Qualitätssicherung, Bereitstellung für Routinekunden, Bereitstellung für Kunden, die besondere Überlegungen oder spezielle Konfigurationen erfordern oder Eigenschaften bauen, und so weiter).
Wie ich bereits sagte, ist dies häufig eine Aufgabe, die mit der Versionskontrolle der Quelle zusammenfällt, und häufig befinden sich Konfigurationsverwaltungsdaten sowohl in der Dokumentation als auch im Quellrepository neben der Quelle. Es muss nicht sein, ist aber oft eine Frage der Bequemlichkeit.
Die Automatisierung einiger Aspekte des Konfigurationsmanagements hat sich in den letzten Jahren erheblich verbessert. Einige Antworten und Kommentare schlugen Skripte vor, um das Konfigurationsmanagement voranzutreiben, und Skripte sind eine gute Antwort, um reproduzierbare Ergebnisse zu erzielen. Oftmals sind handgefertigte Skripte für sich allein jedoch inkonsistent und unvollständig. Eine Möglichkeit, die sich verbessert hat, ist die automatische Bereitstellung. Systeme wie Marionette oder Kochhelfen Sie dabei, Softwarekomponenten und -systeme für einen bestimmten Benutzer oder eine bestimmte Maschine oder für ein bestimmtes Aufgabenprofil anzugeben, und stellen Sie „Rezepte“ bereit, die ein einfaches Einrichten einer vollständigen Maschine oder Umgebung ermöglichen. Grundsätzlich wird das Konzept eines Softwareverteilungs-Repositorys übernommen und erweitert und verallgemeinert, wobei nicht nur die für ein System erforderlichen Softwarepakete bereitgestellt werden, sondern auch die für jedes Paket spezifischen Konfigurationsprofile, damit es in der für Sie geeigneten Weise verwendet werden kann Lage.
Vagrant nimmt dies in eine etwas andere Richtung und bietet eine Möglichkeit, die Definitionen virtueller Maschinen schnell hochzufahren, sodass die virtuelle Software und Hardware einer VM automatisch bereitgestellt werden kann und sich als bequeme Methode zur Reproduktion einer bestimmten Darstellung einer Hardware herausstellt vom Benutzer Ihrer Software verwendete Umgebung.
Jedes System (und jede Variante) benötigt ein wenig Zeit, um eingerichtet zu werden, hat jedoch einen eindeutigen Wert, wenn Sie das erneute Laden und Neukonfigurieren als allgemeine Aufgabe ansehen.