Konsep yang Anda gambarkan adalah manajemen konfigurasi. Ini kedengarannya, cara untuk mengidentifikasi, merekam, versi / trek, dan melaporkan suatu lingkungan. Ini sering merupakan tugas yang sangat terkait dengan kontrol versi dan manajemen pembangunan, tetapi cukup berbeda sehingga sering membutuhkan strategi yang terpisah, bahkan jika menggunakan beberapa konsep yang sama dan mekanisme pemrosesan dan penyimpanan yang sama.
Manajemen konfigurasi selain membantu menjaga lingkungan kerja tetap terkendali juga membantu membuat catatan dari berbagai lingkungan kerja di mana perangkat lunak digunakan (pengembangan seperti yang disebutkan, ditambah pengujian / QA, penyebaran ke pelanggan rutin, penempatan ke pelanggan yang memerlukan pertimbangan khusus atau konfigurasi khusus atau membangun properti, dan sebagainya).
Seperti yang saya katakan, seringkali ini adalah tugas yang bertepatan dengan kontrol versi sumber, dan seringkali data manajemen konfigurasi berada di sebelah sumber dalam dokumentasi dan repositori sumber. Tidak harus begitu, tetapi sering kali merupakan masalah kenyamanan.
Otomasi beberapa aspek manajemen konfigurasi sebagian besar telah meningkat dalam beberapa tahun terakhir. Beberapa jawaban dan komentar menyarankan skrip sebagai cara untuk mempromosikan manajemen konfigurasi, dan skrip adalah jawaban yang baik untuk membantu mencapai hasil yang dapat direproduksi, tetapi seringkali skrip yang dibuat sendiri tidak konsisten dan tidak lengkap. Salah satu cara seperti ini telah ditingkatkan adalah melalui penyediaan otomatis. Sistem seperti boneka atau kokimembantu menentukan komponen dan sistem perangkat lunak untuk pengguna atau mesin tertentu atau untuk profil tugas tertentu dan memberikan 'resep' yang memungkinkan pendekatan lepas tangan untuk menyiapkan mesin atau lingkungan yang lengkap. Ini pada dasarnya mengambil konsep repositori distribusi perangkat lunak dan memperluas dan menggeneralisasinya menyediakan tidak hanya paket perangkat lunak yang diperlukan untuk suatu sistem, tetapi juga profil konfigurasi khusus untuk setiap paket sehingga siap digunakan dengan cara yang sesuai dengan Anda situasi.
Vagrant mengambil ini dalam arah yang sedikit berbeda dan menyediakan cara untuk dengan cepat memutar definisi mesin virtual, sehingga VM dapat memiliki perangkat lunak dan perangkat keras virtualnya disediakan secara otomatis, dan dapat membuktikan menjadi cara yang nyaman untuk mereproduksi representasi tertentu dari perangkat keras lingkungan yang digunakan oleh pengguna perangkat lunak Anda.
Setiap sistem (dan variasi) memerlukan sedikit pengaturan, tetapi memiliki nilai yang jelas jika Anda menemukan tugas memuat ulang dan mengonfigurasi ulang menjadi tugas bersama.