Мне нужно развернуть на 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