I’m trying to deploy my app to AWS using rubber.
But the setup_remote_aliases task gets “stuck” with the message “sftp upload #StringIO:0x103bf1068 ->
On trying cap rubber:refresh, it again gets stuck at the same point. I have a micro instance set up – Can it be because of that?
Here are the logs:
Instance running, fetching hostname/ip data
* executing `rubber:_allow_root_ssh'
* executing "sudo -p 'sudo password: ' bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'"
servers: ["23.20.223.139"]
** Can't connect as user ubuntu to 23.20.223.139, assuming root allowed
* executing `rubber:_direct_connection_23.20.223.139_794'
* executing "echo"
servers: ["23.20.223.139"]
[23.20.223.139] executing command
** [out :: 23.20.223.139] Please login as the ec2-user user rather than root user.
** [out :: 23.20.223.139]
command finished in 11086ms
* executing `rubber:setup_static_ips'
* executing `rubber:setup_local_aliases'
** Writing out aliases into local machines /etc/hosts, sudo access needed
Password:
** Auto role: apache => production.foo.com, {:platform=>"linux"}
** Auto role: app => production.foo.com, {:platform=>"linux"}
** Auto role: passenger => production.foo.com, {:platform=>"linux"}
** Auto role: collectd => production.foo.com, {:platform=>"linux"}
** Auto role: common => production.foo.com, {:platform=>"linux"}
** Auto role: monit => production.foo.com, {:platform=>"linux"}
** Auto role: db => production.foo.com, {:primary=>true, :platform=>"linux"}
** Auto role: postgresql => production.foo.com, {:platform=>"linux"}
** Auto role: postgresql_master => production.foo.com, {:platform=>"linux"}
** Auto role: elasticsearch => production.foo.com, {:platform=>"linux"}
** Auto role: examples => production.foo.com, {:platform=>"linux"}
** Auto role: graphite_server => production.foo.com, {:platform=>"linux"}
** Auto role: graphite_web => production.foo.com, {:platform=>"linux"}
** Auto role: graylog_elasticsearch => production.foo.com, {:platform=>"linux"}
** Auto role: graylog_mongodb => production.foo.com, {:platform=>"linux"}
** Auto role: mongodb => production.foo.com, {:platform=>"linux"}
** Auto role: graylog_server => production.foo.com, {:platform=>"linux"}
** Auto role: graylog_web => production.foo.com, {:platform=>"linux"}
** Auto role: haproxy => production.foo.com, {:platform=>"linux"}
** Auto role: web => production.foo.com, {:platform=>"linux"}
** Auto role: web_tools => production.foo.com, {:platform=>"linux"}
* executing `rubber:setup_remote_aliases'
servers: ["production.foo.com"]
** sftp upload #<StringIO:0x0000010477db48> -> /tmp/setup_remote_aliases
While I don’t know what the exact problem is, I had this kind of problem using rubber too. I found adding more debug info to rubber is very useful.
For your case, you can find where the task is defined and simply log some message.
Also you might want to try Amazon Elastic Beanstalk which supports rails app deployment: https://forums.aws.amazon.com/ann.jspa?annID=1680