Иногда мне нужно воспроизвести проблемы, которые появляются только в среде клиента. Я мог бы вручную настроить виртуальные машины для достаточного отражения их среды, но было бы очень хорошо найти полуавтоматический способ сделать это.
Другими словами, я ищу что-то, что позволит мне сказать: «Создайте среду, которая запускает эту версию Linux, имеет эту версию PHP, установленную» и т. д. Затем я надеюсь, что смогу войти в эту среду и выполнить шаги воспроизведения.
Эти среды, очевидно, будут относительно недолговечны, поскольку как только я воспроизведу эту конкретную проблему, есть шанс, что мне больше никогда не придется воссоздавать ту же среду. Тем не менее, было бы неплохо, если бы конфигурация среды была в формате, легко поддающемся контролю версий, на случай, если она снова понадобится.
Существует ли технология, подходящая для такого варианта использования?
Я слышал о вещах, которые могут иметь отношение к делу
- Проксмокс (сам по себе кажется излишним и недостаточным)
- Vagrant (самого по себе может быть недостаточно, может также потребоваться управление конфигурацией, например Ansible)
- Docker (обычно используется для запуска отдельных приложений, а не для воссоздания полных сред ОС)
Подходят ли какие-либо из них для этого варианта использования? Стоит ли мне рассмотреть другие варианты?
решение1
Я использовал docker для этого в прошлом, и он работал безупречно. Я бы рекомендовал вам изучить его, но вам лучше задать этот вопрос на Software Recommendation StackExchange.
решение2
В итоге я остановился на Vagrant, узнав, что он также может подготовить машину с помощью скриптов оболочки:https://www.vagrantup.com/intro/getting-started/provisioning.html
Кажется, это самый простой способ добиться желаемого, быстро настроив временную специальную среду, отдельную от моей собственной, с простой текстовой конфигурацией, которую можно контролировать версиями.