Как правильно настроить Capistrano для развертывания приложения Rails в нескольких средах с разными разрешениями, необходимыми для каждой среды? Другими словами, представьте типичный сценарий, когда разработчик вносит изменения в код и передает изменения в среду тестирования. После тестирования релиз-менеджер отправляет изменения в продакшн. И так далее, с возможными дополнительными уровнями между ними. Capistrano (даже с многоступенчатым расширением в capistrano-ext), похоже, создан для одного пользователя, имеющего разрешения на развертывание в любой среде. Какую настройку рекомендуется использовать для случаев, когда люди нижнего уровня не могут выполнять развертывание на всем пути к производственной среде?
Разрешения на развертывание в нескольких средах с Capistrano
Ответы (1)
При настройке Capistrano и развертывании существуют различия между учетной записью пользователя, которая используется для развертывания, и людьми с разрешениями, которые могут выполнять развертывание.
В Capistrano вы настраиваете пользователя
set :user, 'deploy'
Эта учетная запись пользователя должна существовать на каждом компьютере, к которому подключается сценарий развертывания Capistrano, каждая роль app
, web
, db
. Рекомендуется настроить его с помощью аутентификации по SSH-ключу.
Когда кто-то использует cap deploy
, он будет подключаться к машинам с SSH-ключами и будет работать, только если у вас установлен ваш открытый ключ для этой учетной записи.
Этот метод позволяет разным людям иметь разный доступ к машинам. Для production
устанавливайте SSH-ключи только людей с административным доступом к машинам. Тогда, даже если кто-то запустит cap deploy
, это не сработает, поскольку они не смогут подключиться к удаленному пользователю.
Мы разрешаем любому иметь свой SSH-ключ в промежуточной среде, но только несколько человек имеют доступ к производственному серверу.