Концепция, которую вы описываете, - это управление конфигурацией. Это, как это звучит, способ идентифицировать, записывать, версию / отслеживать и сообщать о среде. Часто это задача, которая тесно связана с управлением версиями и сборкой, но она достаточно четкая, для которой часто требуется отдельная стратегия, даже если в ней используются одни и те же понятия и одни и те же механизмы обработки и хранения.
Управление конфигурацией, помимо того, что помогает контролировать рабочую среду, также помогает вести учет различных рабочих сред, в которых используется программное обеспечение (разработка, как уже упоминалось, плюс тестирование / контроль качества, развертывание для обычных клиентов, развертывание для клиентов, которые требуют особого рассмотрения или особой конфигурации). или строить свойства и тд).
Как я уже сказал, часто это задача, которая совпадает с управлением версиями исходного кода, и часто данные управления конфигурацией находятся рядом с источником как в документации, так и в хранилище исходного кода. Это не должно быть, но часто для удобства.
В последние годы автоматизация некоторых аспектов управления конфигурациями значительно улучшилась. В некоторых ответах и комментариях сценарии предложены как способ продвижения управления конфигурацией, и сценарии являются хорошим ответом для достижения воспроизводимых результатов, но зачастую сценарии, созданные вручную, сами по себе являются непоследовательными и неполными. Одним из таких способов является автоматическое обеспечение. Системы, такие как кукольный или шеф-поварпомогите определить программные компоненты и системы для конкретного пользователя или машины или для конкретного профиля задачи и предоставить «рецепты», которые позволяют без усилий подойти к настройке полной машины или среды. Он в основном берет концепцию репозитория распространения программного обеспечения и расширяет и обобщает его, предоставляя не только пакеты программного обеспечения, необходимые для системы, но и профили конфигурации, характерные для каждого пакета, чтобы он был готов к использованию в соответствии с вашими требованиями. ситуация.
Vagrant принимает это в несколько ином направлении и предоставляет способ быстрого раскрутки определений виртуальных машин, так что виртуальная машина может автоматически подготовить свое виртуальное программное и аппаратное обеспечение, и может оказаться удобным способом воспроизведения конкретного представления аппаратного обеспечения. среда, используемая пользователем вашего программного обеспечения.
Каждая система (и варианты) требует немного времени для настройки, но имеет определенную ценность, если вы считаете, что задача перезагрузки и перенастройки является обычной задачей.