Назад | Перейти на главную страницу

Capistrano развертывается на разных серверах с разными методами аутентификации

Мне нужно развернуть на 2 разных серверах, и эти 2 сервера имеют разные методы аутентификации (один - сервер моего университета, а другой - веб-сервер Amazon AWS).

У меня уже есть capistrano для сервера моего университета, но я не знаю, как добавить развертывание в AWS, поскольку для этого мне нужно добавить параметры ssh, например, для пользователя файла .pem, например:

ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "test.pem")] 
ssh_options[:forward_agent] = true

Я просмотрел starckoverflow и не упоминал о том, как работать с различными методами аутентификации. этот и этот

я нашел сообщение в котором говорится о двух разных ключах, но этот относится к серверу и git, оба используют разные файлы pem. Это не вариант.

я должен был этот учебник, но не смог найти то, что мне нужно.

Я не знаю, относится ли это к тому, о чем я спрашиваю: я работаю над приложением rails с ruby ​​1.9.2p290 и rails 3.0.10, и я использую репозиторий svn

Пожалуйста, любая помощь приветствуется. большое спасибо

Лучше всего это делать через ssh-config, а не напрямую через Capistrano. Во всяком случае, это проще. Этот трюк упоминается в Ответ Пауло на Stackoverflow. Вы бы построили свой ~/.ssh/config файл, чтобы предоставить необходимые параметры для хостов, которые вы ищете. К счастью, этот файл конфигурации может принимать подстановочные знаки, что упрощает различение машин AWS и Univ.

Host *.univ.edu
    IdentityFile ~/.ssh/id_rsa

Host [aws things]
    IdentityFIle ~/.ssh/aws.pem
    ForwardAgent Yes

В IdentityFile Директива сообщает SSH, какой SSH-ключ использовать, и именно так вы указываете ему, чтобы он выбрал правильный в зависимости от того, куда вы собираетесь. В ForwardAgent эквивалентно упомянутой вами директиве Capistrano.

Я делаю именно это, используя многоступенчатый из Capistrano-Ext расширение.

 gem install capistrano-ext

У меня есть несколько разных этапы создан в config/deploy/ каждый со своими настройками капистрано.

lunix@madeira]  (master) -> cat config/deploy/foo.rb 

set :user,   'ubuntu'
ssh_options[:keys] = File.expand_path('~/.ssh/awsfoo.pem')

server 'foo-01.example.com', :foo

.

lunix@madeira]  (master) -> cat config/deploy/bar.rb 

set :user,   'aussielunix'
ssh_options[:keys] = File.expand_path('~/.ssh/awsbar.pem')

server 'bar-01.example.org', :bar

Теперь нужно просто предварять задачу тем, что этап вы хотите запустить задачу.

cap foo deploy
cap bar deploy