Capistrano Deployment Error
FabriceHecht opened this issue · 15 comments
Hi,
Unfortunately I have some problems deploying with Capistrano. I followed the instructions and got to the point:
branch=stable cap production deploy
But unfortunately the whole thing gives an error message afterwards. It seems to me that Capistrano is not using the login credentials as requested.
00:00 rvm1:hook
01 mkdir -p undefined/rvm1scripts/
#<Thread:0x0000562b38f31c68@/home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
17: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
16: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:31:in `run'
15: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
14: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rvm1-capistrano3-1.4.0/lib/rvm1/tasks/capistrano3.rake:5:in `block (3 levels) in <top (required)>'
13: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:80:in `execute'
12: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
11: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `tap'
10: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
9: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/netssh.rb:130:in `execute_command'
8: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/netssh.rb:177:in `with_ssh'
7: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/connection_pool.rb:63:in `with'
6: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/backends/connection_pool.rb:63:in `call'
5: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `start'
4: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `new'
3: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/session.rb:73:in `initialize'
2: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:631:in `tcp'
1: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:227:in `foreach'
/home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:227:in `getaddrinfo': getaddrinfo: Servname not supported for ai_socktype (SocketError)
1: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/home/fabrice/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype (SSHKit::Runner::ExecuteError)
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype
Caused by:
SocketError: getaddrinfo: Servname not supported for ai_socktype
Tasks: TOP => rvm1:hook
(See full trace by running task with --trace)
Hi @FabriceHecht 😄.
Could you provide the contents of your config/deploy-secrets.yml
file?
HI @javierm
fabrice@fabrice-VirtualBox:~/consul/config$ cat deploy-secrets.yml
production:
deploy_to: "/home/fabrice/consul"
server1: "192.168.178.85"
user: "fabrice"
db_server: "localhost"
server_name: "192.168.178.85"
ssh_port: "22"
full_app_name: "consul"
fabrice@fabrice-VirtualBox:~/consul/config$ cat deploy.rb
# config valid only for current version of Capistrano
lock "~> 3.14.1"
def deploysecret(key)
@deploy_secrets_yml ||= YAML.load_file("config/deploy-secrets.yml")[fetch(:stage).to_s]
@deploy_secrets_yml.fetch(key.to_s, "undefined")
end
set :rails_env, fetch(:stage)
set :rvm1_map_bins, -> { fetch(:rvm_map_bins).to_a.concat(%w[rake gem bundle ruby]).uniq }
set :application, "consul"
set :deploy_to, deploysecret(:deploy_to)
set :ssh_options, port: deploysecret(:ssh_port)
set :repo_url, "https://github.com/FabriceHecht/consul.git"
set :revision, `git rev-parse --short #{fetch(:branch)}`.strip
set :log_level, :info
set :pty, true
set :use_sudo, false
set :linked_files, %w[config/database.yml config/secrets.yml]
set :linked_dirs, %w[.bundle log tmp public/system public/assets public/ckeditor_assets]
set :keep_releases, 5
set :local_user, ENV["USER"]
set :puma_conf, "#{release_path}/config/puma/#{fetch(:rails_env)}.rb"
set :delayed_job_workers, 2
set :delayed_job_roles, :background
set :whenever_roles, -> { :app }
namespace :deploy do
Rake::Task["delayed_job:default"].clear_actions
Rake::Task["puma:smart_restart"].clear_actions
after :updating, "rvm1:install:rvm"
after :updating, "rvm1:install:ruby"
after "deploy:migrate", "add_new_settings"
after :publishing, "setup_puma"
after :published, "deploy:restart"
before "deploy:restart", "puma:restart"
before "deploy:restart", "delayed_job:restart"
before "deploy:restart", "puma:start"
after :finished, "refresh_sitemap"
desc "Deploys and runs the tasks needed to upgrade to a new release"
task :upgrade do
after "add_new_settings", "execute_release_tasks"
invoke "deploy"
end
end
task :refresh_sitemap do
on roles(:app) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, "sitemap:refresh:no_ping"
end
end
end
end
task :add_new_settings do
on roles(:db) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, "settings:add_new_settings"
end
end
end
end
task :execute_release_tasks do
on roles(:app) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake, "consul:execute_release_tasks"
end
end
end
end
desc "Create pid and socket folders needed by puma"
task :setup_puma do
on roles(:app) do
with rails_env: fetch(:rails_env) do
execute "mkdir -p #{shared_path}/tmp/sockets; true"
execute "mkdir -p #{shared_path}/tmp/pids; true"
end
end
end
@FabriceHecht I take the production server is on the same local network as your computer; is that right? Did you use the installer to install CONSUL with the default deploy
user? If not, which user did you create on the production server?
I take the production server is on the same local network as your computer; is that right?
Yes, the production server runs (for testing purposes) on an old laptop and the local installation is on my usual working laptop.
They both are in the same network. SSH it self works fine and without password request. I also tried to deploy my fork from my local installation to a server in our data center, which also doesn't work with the same error.
Did you use the installer to install CONSUL with the default deploy user? If not, which user did you create on the production server?
I used the installer for the production installation. The name of my user is fabrice. As I mentioned, I also tried it on a second machine in the datacenter. For this second Installation I used the default deploy user, but with the same result.
In the second installation, were you also using deploy_to: "/home/fabrice/consul"
and user: "fabrice"
in the deploy-secrets.yml
fiel or did you modified those lines so deploy
was used?
@javierm
Yes, I changed it to deploy in the second installation.
Could you paste the error messages you got in the second installation? Right now I'm not sure on which machine the error is taking place since on both machines the user is fabrice
🤔.
00:00 rvm1:hook
01 mkdir -p undefined/rvm1scripts/
#<Thread:0x0000562028b9d310@/home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
17: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
16: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `run'
15: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
14: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/rvm1-capistrano3-1.4.0/lib/rvm1/tasks/capistrano3.rake:5:in `block (3 levels) in <top (required)>'
13: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:80:in `execute'
12: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
11: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `tap'
10: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
9: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:130:in `execute_command'
8: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:177:in `with_ssh'
7: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/connection_pool.rb:63:in `with'
6: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/backends/connection_pool.rb:63:in `call'
5: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `start'
4: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `new'
3: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/session.rb:73:in `initialize'
2: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:631:in `tcp'
1: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:227:in `foreach'
/home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:227:in `getaddrinfo': getaddrinfo: Servname not supported for ai_socktype (SocketError)
1: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/home/fabrice/.rvm/gems/ruby-3.0.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype (SSHKit::Runner::ExecuteError)
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype
Caused by:
SocketError: getaddrinfo: Servname not supported for ai_socktype
Tasks: TOP => rvm1:hook
(See full trace by running task with --trace)
3: from /home/fabrice/.rvm/gems/ruby-3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/session.rb:73:in `initialize'
2: from /home/fabrice/.rbenv/versions/2.6.6/lib/ruby/2.6.0/socket.rb:631:in `tcp'
@FabriceHecht Are you using both rvm and rbenv on your working laptop? 🤔 Also RVM seems to be using Ruby 3.0.0, while CONSUL depends on Ruby 2.6.6.
@javierm Yes, I am using both. Should In uninstall one of it? How can I tell RVM to use Ruby 2.6.6?
They might be incompatible, so yes, uninstall one of them unless you're sure you need both for some reason.
How can I tell RVM to use Ruby 2.6.6?
It should do it automatically because it reads the .ruby-version
file present in CONSUL. It's probably failing now because both rvm and rbenv are installed 🤔.
By the way, on your local machine, it doesn't matter whether you use rbenv or RVM. On the production server CONSUL expects RVM though, and that's what the installer sets up.
@javierm I uninstalled rbenv and had to bundle again and set the default ruby version for rvm and now its running into the same error but with rvm instead of rbenv.
fabrice@fabrice-VirtualBox:~/consul$ cap production deploy
00:00 rvm1:hook
01 mkdir -p undefined/rvm1scripts/
#<Thread:0x00005648a8e0a488@/home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
17: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
16: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `run'
15: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
14: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/rvm1-capistrano3-1.4.0/lib/rvm1/tasks/capistrano3.rake:5:in `block (3 levels) in <top (required)>'
13: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:80:in `execute'
12: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
11: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `tap'
10: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
9: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:130:in `execute_command'
8: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:177:in `with_ssh'
7: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/connection_pool.rb:63:in `with'
6: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/backends/connection_pool.rb:63:in `call'
5: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `start'
4: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/net-ssh-6.1.0/lib/net/ssh.rb:251:in `new'
3: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/net-ssh-6.1.0/lib/net/ssh/transport/session.rb:73:in `initialize'
2: from /home/fabrice/.rvm/rubies/ruby-2.6.6/lib/ruby/2.6.0/socket.rb:631:in `tcp'
1: from /home/fabrice/.rvm/rubies/ruby-2.6.6/lib/ruby/2.6.0/socket.rb:227:in `foreach'
/home/fabrice/.rvm/rubies/ruby-2.6.6/lib/ruby/2.6.0/socket.rb:227:in `getaddrinfo': getaddrinfo: Servname not supported for ai_socktype (SocketError)
1: from /home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/home/fabrice/.rvm/gems/ruby-2.6.6/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype (SSHKit::Runner::ExecuteError)
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as undefined@undefined: getaddrinfo: Servname not supported for ai_socktype
Caused by:
SocketError: getaddrinfo: Servname not supported for ai_socktype
Tasks: TOP => rvm1:hook
(See full trace by running task with --trace)
Just realized something:
fabrice@fabrice-VirtualBox:~/consul/config$ cat -secrets.yml
production:
deploy_to: "/home/fabrice/consul"
server1: "192.168.178.85"
user: "fabrice"
db_server: "localhost"
server_name: "192.168.178.85"
ssh_port: "22"
full_app_name: "consul"
Are the file contents literally these ones? I'm asking because every line except the first one should start with two spaces 🤔.
@FabriceHecht We've added more precise instructions about configuring the deploy-secrets.yml
file. Hope that helps!