Разрешения на развертывание в нескольких средах с Capistrano

Как правильно настроить Capistrano для развертывания приложения Rails в нескольких средах с разными разрешениями, необходимыми для каждой среды? Другими словами, представьте типичный сценарий, когда разработчик вносит изменения в код и передает изменения в среду тестирования. После тестирования релиз-менеджер отправляет изменения в продакшн. И так далее, с возможными дополнительными уровнями между ними. Capistrano (даже с многоступенчатым расширением в capistrano-ext), похоже, создан для одного пользователя, имеющего разрешения на развертывание в любой среде. Какую настройку рекомендуется использовать для случаев, когда люди нижнего уровня не могут выполнять развертывание на всем пути к производственной среде?




Ответы (1)


При настройке Capistrano и развертывании существуют различия между учетной записью пользователя, которая используется для развертывания, и людьми с разрешениями, которые могут выполнять развертывание.

В Capistrano вы настраиваете пользователя

set :user, 'deploy'

Эта учетная запись пользователя должна существовать на каждом компьютере, к которому подключается сценарий развертывания Capistrano, каждая роль app, web, db. Рекомендуется настроить его с помощью аутентификации по SSH-ключу.

Когда кто-то использует cap deploy, он будет подключаться к машинам с SSH-ключами и будет работать, только если у вас установлен ваш открытый ключ для этой учетной записи.

Этот метод позволяет разным людям иметь разный доступ к машинам. Для production устанавливайте SSH-ключи только людей с административным доступом к машинам. Тогда, даже если кто-то запустит cap deploy, это не сработает, поскольку они не смогут подключиться к удаленному пользователю.

Мы разрешаем любому иметь свой SSH-ключ в промежуточной среде, но только несколько человек имеют доступ к производственному серверу.

person christophercotton    schedule 27.01.2011