Capistrano implementando em diferentes servidores com diferentes métodos de autenticação

2

Eu preciso implantar em dois servidores diferentes e esses dois servidores têm métodos de autenticação diferentes (um é o servidor da minha universidade e o outro é um servidor da Web amazon AWS)

Já tenho o capistrano em execução para o servidor da minha universidade, mas não sei como adicionar a implantação à AWS, pois para isso preciso adicionar opções ssh, por exemplo, ao usuário do arquivo .pem, assim:

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

Naveguei no starckoverflow e não menciono o post sobre como lidar com diferentes métodos de autenticação isso e isso

Eu encontrei um post que fala sobre duas chaves diferentes, mas esta se refere para um servidor e um git, ambos usam arquivos pem diferentes. Este não é o caso.

Eu cheguei a este tutorial , mas não consegui encontrar o que preciso.

Não sei se isso é relevante para o que estou perguntando: estou trabalhando em um aplicativo rails com o ruby 1.9.2p290 e rails 3.0.10 e estou usando um repositório svn

Por favor, qualquer ajuda do bem-vindo. Muito obrigado

    
por marimaf 20.06.2012 / 18:56

2 respostas

2

Isso é melhor feito por meio de ssh-configs em vez de Capistrano diretamente. É mais fácil, de qualquer maneira. O truque está aludido na resposta de Paulo no Stackoverflow. Você criaria seu arquivo ~/.ssh/config para fornecer os parâmetros necessários para os hosts que está procurando. Felizmente, este arquivo de configuração pode aceitar curingas, o que torna mais fácil distinguir entre máquinas da AWS e Univ.

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

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

A diretiva IdentityFile diz ao SSH qual chave SSH usar, que é como você diz para selecionar o caminho certo, dependendo de onde você está indo. O ForwardAgent é equivalente à diretiva Capistrano que você mencionou.

    
por 29.08.2012 / 05:20
0

Eu faço exatamente isso usando multistage do capistrano-ext

 gem install capistrano-ext

Eu tenho alguns estágios diferentes criados em config/deploy/ cada com suas próprias configurações de capistrano.

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

Agora, é apenas uma questão de preceder a tarefa com que estágio você quer executar a tarefa.

cap foo deploy
cap bar deploy
    
por 14.02.2013 / 13:11