El concepto que está describiendo es la gestión de la configuración. Esto es lo que parece, una forma de identificar, grabar, versionar / rastrear e informar un entorno. A menudo es una tarea que está fuertemente relacionada con el control de versiones y la gestión de compilación, pero es lo suficientemente distinta que a menudo requiere una estrategia separada, incluso si utiliza algunos de los mismos conceptos y los mismos mecanismos de procesamiento y almacenamiento.
La gestión de la configuración, además de ayudar a mantener un entorno de trabajo bajo control, también ayuda a establecer un registro de los diferentes entornos de trabajo en los que se utiliza el software (desarrollo como se mencionó, más pruebas / control de calidad, despliegue a clientes de rutina, despliegue a clientes que requieren consideración especial o configuración especial o construir propiedades, y así sucesivamente).
Como dije, a menudo esta es una tarea que coincide con el control de la versión de origen y, a menudo, los datos de administración de la configuración residen junto al origen en la documentación y en el repositorio de origen. No tiene que ser así, pero a menudo es una cuestión de conveniencia.
La automatización de algunos aspectos de la gestión de la configuración ha mejorado en gran medida en los últimos años. Algunas respuestas y comentarios sugirieron guiones como una forma de promover la gestión de la configuración, y los guiones son una buena respuesta para ayudar a lograr resultados reproducibles, pero a menudo los guiones hechos a mano por sí mismos son inconsistentes e incompletos. Una de las formas en que esto ha mejorado es mediante el aprovisionamiento automático. Sistemas como marionetas o chefayuda a especificar componentes y sistemas de software para un usuario o máquina en particular o para un perfil de tarea en particular y proporciona 'recetas' que permiten un enfoque directo para configurar una máquina o entorno completo. Básicamente, toma el concepto de un repositorio de distribución de software y lo extiende y generaliza proporcionando no solo los paquetes de software necesarios para un sistema, sino también los perfiles de configuración específicos de cada paquete para que esté listo para usar de la manera apropiada para su situación.
Vagrant toma esto en una dirección ligeramente diferente y proporciona una forma de girar rápidamente las definiciones de máquinas virtuales, de modo que una VM puede tener su software y hardware virtual aprovisionados automáticamente, y puede resultar una forma conveniente de reproducir una representación particular de un hardware entorno utilizado por el usuario de su software.
Cada sistema (y variaciones) tarda un poco en configurarse, pero tiene un valor claro si considera que la tarea de recargar y reconfigurar es una tarea común.