web-dev-qa-db-fra.com

casquette avortée! SSHKit :: Runner :: ExecuteError: Exception lors de l'exécution sur l'hôte

J'essaie de déployer du code avec Capistrano 3 sur un serveur Ubuntu à partir du référentiel GIT, mais j'obtiens cette erreur.

=============================================== =========================
Voici mon Gemfile. 

gem 'capistrano', '~> 3.1.0'

#//Use Unicorn as the app server
gem 'Unicorn'

#// Use Capistrano for deployment
group :development do
gem 'capistrano-Rails'
gem 'capistrano-bundler'
gem 'capistrano-rbenv', "~> 2.0"
end

source 'https://rubygems.org'

=============================================== ======================== # deploy.rb

lock '3.1.0'

#// Define the name of the application
set :application, 'my_app'

#// Define where can Capistrano access the source repository
#// set :repo_url, 'https://github.com/[user name]/[application name].git'
set :scm, :git
set :repo_url, '[email protected]:jaipratik/rw.git'

set :use_Sudo, true

set :log_level, :debug

#// Define where to put your application code
set :deploy_to, "/var/www/my_app"

set :pty, true

set :format, :pretty

=============================================== ======================== # // production.rb

role :app, %w{ubuntu@{IP/Host}}

server '{IP/Host}', user: 'ubuntu', roles: %w{web app}

set :ssh_options, {
keys: %w(/Users/jay/.ssh/id_rsa),
forward_agent: false,
user: 'user'
# auth_methods: %w(password)
}

=============================================== ======================== Résultat pour $ bundle exec cap production deploy --trace

** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke deploy (first_time)
** Execute deploy
** Invoke deploy:starting (first_time)
** Execute deploy:starting
** Invoke deploy:check (first_time)
** Execute deploy:check
** Invoke git:check (first_time)
** Invoke git:wrapper (first_time)
** Execute git:wrapper
INFO[f8299d4f] Running /usr/bin/env mkdir -p /tmp/my_app/ on {IP/Host}
DEBUG[f8299d4f] Command: /usr/bin/env mkdir -p /tmp/my_app/
INFO[f8299d4f] Finished in 0.723 seconds with exit status 0 (successful).
DEBUGUploading /tmp/my_app/git-ssh.sh 0.0%
INFOUploading /tmp/my_app/git-ssh.sh 100.0%
INFO[b509dfb7] Running /usr/bin/env chmod +x /tmp/my_app/git-ssh.sh on {IP/Host}
DEBUG[b509dfb7] Command: /usr/bin/env chmod +x /tmp/my_app/git-ssh.sh
INFO[b509dfb7] Finished in 0.084 seconds with exit status 0 (successful).
** Execute git:check
DEBUG[9646aea0] Running /usr/bin/env git ls-remote [email protected]:jaipratik/rw.git on {IP/Host}
DEBUG[9646aea0] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/my_app/git-ssh.sh /usr/bin/env git ls-remote [email protected]:jaipratik/rw.git )
DEBUG[9646aea0] c452c845bb80f72d3023557d2ea8f776950c659f
DEBUG[9646aea0]
DEBUG[9646aea0] HEAD
DEBUG[9646aea0]
DEBUG[9646aea0] c452c845bb80f72d3023557d2ea8f776950c659f
DEBUG[9646aea0]
DEBUG[9646aea0] refs/heads/master
DEBUG[9646aea0]
DEBUG[9646aea0] Finished in 0.940 seconds with exit status 0 (successful).
** Invoke deploy:check:directories (first_time)
** Execute deploy:check:directories
INFO[fa4b1f56] Running /usr/bin/env mkdir -pv /var/www/my_app/shared /var/www/my_app/releases on {IP/Host}
DEBUG[fa4b1f56] Command: /usr/bin/env mkdir -pv /var/www/my_app/shared /var/www/my_app/releases
INFO[fa4b1f56] Finished in 0.086 seconds with exit status 0 (successful).
** Invoke deploy:check:linked_dirs (first_time)
** Execute deploy:check:linked_dirs
** Invoke deploy:check:make_linked_dirs (first_time)
** Execute deploy:check:make_linked_dirs
** Invoke deploy:check:linked_files (first_time)
** Execute deploy:check:linked_files
** Invoke deploy:started (first_time)
** Execute deploy:started
** Invoke deploy:updating (first_time)
** Invoke deploy:new_release_path (first_time)
** Execute deploy:new_release_path
** Execute deploy:updating
** Invoke git:create_release (first_time)
** Invoke git:update (first_time)
** Invoke git:clone (first_time)
** Invoke git:wrapper
** Execute git:clone
DEBUG[fa77f295] Running /usr/bin/env [ -f /var/www/my_app/repo/HEAD ] on {IP/Host}
DEBUG[fa77f295] Command: [ -f /var/www/my_app/repo/HEAD ]
DEBUG[fa77f295] Finished in 0.081 seconds with exit status 1 (failed).
DEBUG[0cc407cc] Running /usr/bin/env if test ! -d /var/www/my_app; then echo "Directory does not exist '/var/www/my_app'" 1>&2; false; fi on {IP/Host}
DEBUG[0cc407cc] Command: if test ! -d /var/www/my_app; then echo "Directory does not exist '/var/www/my_app'" 1>&2; false; fi
DEBUG[0cc407cc] Finished in 0.075 seconds with exit status 0 (successful).
INFO[de52ca0e] Running /usr/bin/env git clone --mirror [email protected]:jaipratik/rw.git /var/www/my_app/repo on {IP/Host}`enter code here`
DEBUG[de52ca0e] Command: cd /var/www/my_app && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/my_app/git-ssh.sh /usr/bin/env git clone --mirror [email protected]:jaipratik/rw.git /var/www/my_app/repo )
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on Host {IP/Host}: git exit status: 1
git stdout: Nothing written
git stderr: Nothing written
/Users/jay/.rvm/gems/Ruby-2.1.0/gems/sshkit-1.5.1/
9
JP.

Capistrano n'a pas pu créer le dossier sur ec2. Une fois que j'ai créé le dossier, cela a fonctionné à merveille. 

Donc, si vous rencontrez des problèmes similaires, essayez de créer le dossier sur ec2, puis exécutez le déploiement de la production de cap. 

4
JP.

Il suffit d'écrire la commande dans la console:

 ssh-add

puis relancez la commande (c'est-à-dire cap production deploy), cela fonctionnera à coup sûr.

3
Manish Shrivastava

Alors, quelles sont les autorisations pour /var/www/my_app sur votre ordinateur distant? Assurez-vous qu'ils appartiennent au même utilisateur que vous avez spécifié dans cette option de configuration:

set :user, "mydeployuser"

Sinon, Capistrano est paramétré par défaut sur l'utilisateur que vous utilisez pour exécuter la commande 'cap' sur la machine cliente. Assurez-vous qu'il dispose des autorisations pour modifier/créer /var/www/my_app

Depuis que tu as:

set :use_Sudo, true

il est possible que Sudo ne soit pas configuré comme Sudo sans mot de passe, comme le suggère Cap 3 docs

2
Rico

J'ai eu le même problème. Il se trouve que j'ai oublié d'ajouter ma clé SSH d'instance Gitlab (le «programme d'exécution») au fichier ~/.ssh/registered_keys de mon serveur.

0
Didier Sampaolo

Si toutes les solutions ci-dessus ne vous conviennent pas, essayez ceci. Ça marche pour moi. Acclamation.

ssh-add ~/.ssh/your_private_id_rsa
and run
eval `ssh-agent`

Réf .: http://mjacobus.github.io/2015/08/20/solving-weird-capistrano-problems-with-ssh-authentication.html

0
Kiry Meas