2013-01-03 45 views
2

我試圖用橡膠寶石(我遵循Railscasts tutorial)將我的rails應用程序上傳到amazon ec2。每次運行cap rubber:create_staging我都無法連接到服務器。我一直在想盡一切辦法做到這一點,但經過一整天的努力,我想我會發布這裏發生的事情。未能使用Rubber連接到ec2

Andrews-MacBook-Pro:blog andrew$ cap rubber:create_staging 
Respawning with 'bundle exec' 
    triggering load callbacks 
    * 2013-01-03 17:27:20 executing `rubber:init' 
    * 2013-01-03 17:27:23 executing `rubber:create_staging' 
Hostname to use for staging instance [production]: 
Roles to use for staging instance [apache,app,collectd,common,db:primary=true,elasticsearch,examples,graphite_server,graphite_web,graylog_elasticsearch,graylog_mongodb,graylog_server,graylog_web,haproxy,mongodb,monit,passenger,postgresql,postgresql_master,web,web_tools]: 
    * 2013-01-03 17:27:26 executing `rubber:create' 
    * Security Group already in cloud, syncing rules: blog_production_production 
    * Security Group already in cloud, syncing rules: blog_production_graylog_mongodb 
    * Security Group already in cloud, syncing rules: blog_production_mongodb 
    * Security Group already in cloud, syncing rules: blog_production_postgresql 
    * Security Group already in cloud, syncing rules: blog_production_postgresql_master 
    * Security Group already in cloud, syncing rules: blog_production_db 
    * Security Group already in cloud, syncing rules: blog_production_app 
    * Security Group already in cloud, syncing rules: blog_production_web 
    * Security Group already in cloud, syncing rules: blog_production_haproxy 
    * Security Group already in cloud, syncing rules: blog_production_elasticsearch 
    * Security Group already in cloud, syncing rules: blog_production_monit 
    * Security Group already in cloud, syncing rules: blog_production_common 
    * Security Group already in cloud, syncing rules: blog_production_default 
    * Security Group already in cloud, syncing rules: blog_production_graylog_elasticsearch 
    * Security Group already in cloud, syncing rules: blog_production_apache 
    * Security Group already in cloud, syncing rules: blog_production_passenger 
    * Security Group already in cloud, syncing rules: blog_production_examples 
    * Security Group already in cloud, syncing rules: blog_production_graphite_web 
    * Security Group already in cloud, syncing rules: blog_production_graphite_server 
    * Security Group already in cloud, syncing rules: blog_production_graylog_server 
    * Security Group already in cloud, syncing rules: blog_production_collectd 
    * Security Group already in cloud, syncing rules: blog_production_graylog_web 
    * Security Group already in cloud, syncing rules: blog_production_web_tools 
** Creating instance ami-eafa5883/m1.small/blog_production_default,blog_production_web,blog_production_web_tools,blog_production_production,blog_production_apache,blog_production_app,blog_production_passenger,blog_production_collectd,blog_production_common,blog_production_monit,blog_production_db,blog_production_postgresql,blog_production_postgresql_master,blog_production_elasticsearch,blog_production_examples,blog_production_graphite_server,blog_production_graphite_web,blog_production_graylog_elasticsearch,blog_production_graylog_mongodb,blog_production_mongodb,blog_production_graylog_server,blog_production_graylog_web,blog_production_haproxy/Default 
** Instance production created: i-7b4f840a 
Waiting for instances to start.......................... 
** Instance running, fetching hostname/ip data 
    * 2013-01-03 17:28:37 executing `rubber:_allow_root_ssh' 
    * executing "sudo -p 'sudo password: ' bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'" 
    servers: ["23.20.130.97"] 
.... ** Failed to connect to 23.20.130.97, retrying 
    * 2013-01-03 17:28:44 executing `rubber:_allow_root_ssh' 
    * executing "sudo -p 'sudo password: ' bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'" 
    servers: ["23.20.130.97"] 
. ** Failed to connect to 23.20.130.97, retrying 
    * 2013-01-03 17:28:46 executing `rubber:_allow_root_ssh' 
    * executing "sudo -p 'sudo password: ' bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'" 
    servers: ["23.20.130.97"] 
. ** Failed to connect to 23.20.130.97, retrying 
    * 2013-01-03 17:28:49 executing `rubber:_allow_root_ssh' 
    * executing "sudo -p 'sudo password: ' bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'" 
    servers: ["23.20.130.97"] 

etc 

然後它似乎進入一個無限循環,並嘗試像上面每隔幾分鐘連接到服務器。

編輯:我終於通過在本地機器上重新安裝ruby + gems來解決了這個問題。仍然不確定是什麼造成這種情況

+0

你能通過SSH手動連接到ec2實例嗎? – regulatethis

+0

@regulatethis是的,我可以。我還將pem密鑰下載到〜/ .ec2 /目錄(它在那裏沒有擴展名,並帶有.pub擴展名),如教程所述。 – andmcgregor

+0

我有同樣的錯誤...當我試圖SSH到服務器它說,重試'ubuntu'用戶,而不是'root'這樣我可以登錄。然後我改變我的用戶Ubuntu的「設置:用戶, 'Ubuntu的'」。但即使如此,錯誤仍然存​​在......所以如果有人能夠描述這裏發生的事情,那就請做吧。 – Boti

回答

0

這實際上是因爲,當您在EC2上創建實例時,即使實例已創建(並且您可以在AWS管理控制檯上看到綠燈),但仍需要一些時間來傳播可從中訪問的IP地址您的部署機器。

解決方案實際上是等待幾分鐘,因爲它最終會連接。

0

我得到了一個類似的錯誤,但通過重命名我的私鑰解決了它,所以它沒有.pem擴展名。橡膠常見問題對此有一些參考。我做了這個變化

https://github.com/rubber/rubber/wiki/FAQ

後,它的工作。