2012-05-16 10 views
14

¿Por qué estoy recibiendo auttenicationFailed cuando trato de ejecutar deploy setup? Estoy usando el ssh como mi contraseña. ¿Debo cambiar algo en database.yml o deploy.rb? Se enumeran a continuación.Capistrano Deploy - Net :: SSH :: AuthenticationFailed - AWS EC2

$ cap deploy:setup 
    * executing `deploy:setup' 
    * executing "sudo -p 'sudo password: ' mkdir -p /var/www/apps/sample_app /var/www/apps/sample_app 
/releases /var/www/apps/sample_app/shared /var/www/apps/sample_app/shared/system /var/www  
/apps/sample_app/shared/log /var/www/apps/sample_app/shared/pids" 
    servers: ["ec2-20-21-42-51.compute-1.amazonaws.com"] 
Password: 
connection failed for: ec2-20-21-42-51.compute-1.amazonaws.com 
(Net::SSH::AuthenticationFailed: ubuntu) 

deploy.rb

# The name of your app 
set :application, "sample_app" 

# The directory on the EC2 node that will be deployed to 
set :deploy_to, "/var/www/apps/#{application}" 

set :keep_releases, 3 

# deploy with git 
set :scm, :git 
set :repository, "[email protected]:username/sample_app.git" 
set :git_shallow_clone, 1 
set :branch, "master" 
set :use_sudo, true 

set :user, "ubuntu" 
ssh_options[:forward_agent] = true 
default_run_options[:pty] = true 

# The address of the remote host on EC2 (the Public DNS address) 
set :location, "ec2-20-21-42-51.compute-1.amazonaws.com" 

# setup some Capistrano roles 
role :app, location 
role :web, location 
role :db, location, :primary => true 

after 'deploy:update_code', 'deploy:symlink_db' 


namespace :deploy do 

desc "Restart Application" 
task :restart, :roles => :app do 
run "touch #{deploy_to}/#{shared_dir}/tmp/restart.txt" 
end 

desc "Symlinks the database.yml" 
task :symlink_db, :roles => :app do 
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml" 
end 

end 

database.yml

development: 
    adapter: mysql2 
    database: db/development.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: root 
    socket: /tmp/mysql.sock 

test: 
    adapter: mysql2 
    database: db/test.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: root 
    socket: /tmp/mysql.sock 

production: 
    adapter: mysql2 
    database: db/production.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: ubuntu 
    socket: /var/run/mysqld/mysqld.sock 

Respuesta

15

Para Capistrano v2

especificar la ubicación de su archivo pem

ssh_options[:keys] = ["/where/ever/it/is/key.pem"] 

Para Capistrano v3 ssh_options han cambiado ligeramente, pero los ajustes básicos son más o menos iguales.

set :ssh_options, { 
    keys: %w(/where/ever/it/is/key.pem), 
    forward_agent: false, 
    user: 'ubuntu' 
} 
+3

¿cómo debemos manejar esto cuando se implementan varios desarrolladores? – juanpastas

+1

'ssh_options [: keys] = [File.join (ENV [" HOME "]," /.ssh/key.pem ")]' –

0

¿Tiene derechos "sudo"? ¿El usuario es "ubuntu" en sudo group?

+0

he tenido que añadir ssh_options [: teclas] = [ "/Users/Victoria/Documents/ServerKeys/key.pem"] a mi archivo deploy.rb – SilverNightaFall

+0

Si puede utilizar los derechos "sudo", debe permitirlo para su usuario (ubuntu). El problema no está en la aplicación capistrano o RoR. Si no necesita "sudo", puede configurar: use_sudo false. Mi configuración de ubuntu para usuarios: sudo: x: 27: oliver, deployer, michal – quatermain

0

Al implementar en una instancia de ec2, no tendrá derechos de sudo con el usuario de ubuntu.

cambiar esta situación:

set :use_sudo, true

A esto:

set :use_sudo, false

Cuestiones relacionadas