Деплой на множество удалённых серверов. Какие выбрать инструменты?
Добрый день.
Есть исходные данные:
примерно 100 отдельных серверов на которых крутятся маленькие сайты (аля посадочные страницы).
Сейчас все изменения заливаются командой программистов по FTP, что, конечно, ужасно.
Что требуется:
- контроль за изменениями
- много профильность (для каждого программиста)
- возможность ограничить доступ к тому или иному серверу
Какое решение по вашему самое адекватное? Все серверы "свои" и могут быть настроены как необходимо с подключением чего угодно.
Как вариант, рассматривается GIT, но как это всё систематизировать и объединить в один конфигурационный файл особо идей нет.
Спасибо!
UPD: Пару уточнений:
- все сайты написаны на PHP
- все сайты независимы, т.е. это не деплой 1 на 100, а 100 на 100.
- Интересует в первую очередь ограничение доступа и логирование, при одном конфигурационном файле /сервисе.
а зачем деплоить 100 на 100 сразу? Вы обновляете ядро и хотите чтобы оно применилось сразу на всех серверах?
Обычно схема такая:
1. Для каждого проекта есть git репо, добавляется post hook на Jenkins сервер
2. На сервере под управлением Jenkins создаются проекты, каждый проект делает: 1)обновляется через гит, 2)обновляет зависимости, 3)тестирует проект, 4)заливает на удаленный сервер
3. При коммите в мастер ветку или слиянии с мастер веткой разработчиком, уходит запрос на jenkins и тот делает свою работу. Для вашего случая 1 и 4 обязательные
Вместо jenkins можно использовать любой облачный CI сервис, я использую codeship
Да, в том числе у всех сайтов есть модули, которые нужно обновлять. Но в основном задача более тривиальная, программисту нужно залить изменения на один конкретный сайт, вот что бы он это не делал ручками и нужно что то, но более централизованное, чем GIT
обычно схема такая:
1. Для каждого проекта есть git репо, добавляется post hook на Jenkins сервер
2. На сервере под управлением Jenkins создаются проекты, каждый проект делает: 1)обновляется через гит, 2)обновляет зависимости, 3)тестирует проект, 4)заливает на удаленный сервер
3. При коммите в мастер ветку или слиянии с мастер веткой разработчиком, уходит запрос на jenkins и тот делает свою работу. Для вашего случая 1 и 4 обязательные
Вместо jenkins можно использовать любой облачный CI сервис, я использую codeship
sim3x: Ну например ansible на первый взгляд не очень подходит. Т.к. не очень понятно как программист в команде будет деплоить свои изменения на сервер. Нужно что то простое, по типу GIT, но настраивать гит на каждом сервере по отдельности кажется крайним решением.
Nick S: ну вот для
>но настраивать гит на каждом сервере по отдельности
и используют
Программер не должен деплоить на продакшен
коммитит в гит, гит разворачивается на тест-сервере, тестировщики дают добро, менеджер жмет кнопку в Continuous Integration и скрипт аплоадит на продакшен