У меня есть следующая настройка:
- Много разных проектов, которые являются отдельными репозиториями git, но все они имеют в основном ту же конфигурацию сервера
- Каждый проект, в свою очередь, зависит от многих других проектов, и мы используем менеджер зависимостей композитора, чтобы собрать их (язык PHP здесь).
Я хочу использовать Vagrant и включать в репозиторий файл Vagrant, поэтому мои члены команды могут клонировать репозиторий, запускать vagrant up
и быть готовым к работе.
Теперь мой вопрос направлен на обеспечение. Мне нужно установить несколько инструментов и пакетов, таких как apache, git, mysql и несколько php-пакетов, а затем загрузить некоторые файлы (например, недавний db dump dump), установить все в /var/www и запустить команду установки компоновщика.
Таким образом, один из вариантов сделать это - использовать менеджера, используя рецепты, такие как шеф-повар или марионетка. Альтернативой может быть запись файла bash и использование оболочки.
У меня не так много опыта с шеф-поваром/марионеткой, поэтому, естественно, проще использовать опцию оболочки, но я хочу понять, не является ли это хорошим/жизнеспособным вариантом в конечном итоге.
Почему мне кажется, что плохой подход пойти с марионеткой/шеф-поваром:
Я понимаю, что мне придется использовать несколько разных рецептов и почти всегда будут использовать одни и те же рецепты для моих разных репозиториев, поэтому мне пришлось бы включить их во все репозитории. Подумайте о том, чтобы иметь 20 репозиториев и нуждающихся в 10 рецептах, это означает, что мне нужно будет добавить 200 рецептов в виде git -подмодуля или одинакового (также каждый член команды должен клонировать репозиторий, затем клонировать 10 репозиториев рецептов и только затем запускать бродячие вверх для каждого проекта). Напротив, мне просто нужно иметь небольшое репо с моей оболочкой script и клонировать его 20 раз.
Я, вероятно, что-то пропустил, поэтому, пожалуйста, советую, нужно ли мне выбирать шеф-повара/марионетки и почему это имеет смысл, даже если у моих репозиториев все очень похоже на настройку сервера.