
Я ищу передовой опыт развертывания с помощью Capistrano.
Я хотел бы начать с краткого описания того, как я выполнял развертывание.
capistrano установлен локально на компьютере разработчика. Я разворачиваю thought gateway с опцией capistrano :gateway
. Сначала я думал, что с :gateway
опцией мне нужно иметь ssh-подключение только к хосту gateway, но оказалось, что мне нужно ssh-подключение (открытый ключ) на все хосты, на которых я хочу выполнить развертывание.
Мне бы хотелось найти удобный и безопасный способ развертывания приложения.
Например, в случае, когда к работе приступает новый разработчик, гораздо удобнее разместить егооткрытый_ключтолько на сервере шлюза, а не на всех серверах приложений. С другой стороны, я не хочу, чтобы он имел какое-либо подключение к серверам в частностисшдля шлюза, просто потому что он разработчик, ему нужно делать только развертывания.
Если вам известны передовые методы развертывания с помощью Capistrano, сообщите нам об этом.
решение1
Capistrano разработан с самого начала на основе предположения, что ssh является основой всего управления. Машина, используемая в качестве шлюза, должна как принимать, так и выдавать ssh-подключения. Обойти это невозможно. Ваши разработчики получат ssh-доступ к шлюзу.
У вас есть некоторые требования:
- Простота добавления новых разработчиков в список авторизованных ключей ваших целей развертывания
- Не хотим предоставлять разработчикам полноценный терминал на шлюзовом блоке
Вам нужно решить, как вы собираетесь управлять ключами на ваших целях развертывания. У вас есть два основных варианта здесь:
- Используйте общий ключ, он будет предоставлен каждому и будет встроен в образ/цели.
- Используйте определенные ключи, каждый получает свой собственный, и вы управляете списком authorized_keys через что-то вродекукольныйилишеф-повар.
Второй вариант наиболее безопасен, но работает лучше всего, если у вас есть система управления конфигурацией. Вам действительно стоит ее использовать, и она даже может предоставить файл author_keys для сервера шлюза.
У вас есть несколько вариантов ограничения действий разработчиков после того, как они подключатся к вашей системе по SSH.
- Ограничение доступа к оболочке SSH на сервере Debian
- Пользовательская оболочка Openssh
- Как ограничить оболочку пользователя, разрешив ей запускать программы оболочки
В зависимости от того, как Capistrano фактически работает со шлюзом, некоторые из них могут помешать ему работать, поэтому необходимо провести тестирование. Возможно, для его работы потребуется полная оболочка.