ruby on rails app使用厨师食谱ec部署

时间:2013-10-17 13:36:39

标签: ruby-on-rails ruby ubuntu amazon-web-services chef

我正在尝试使用厨师在rails应用程序上部署ruby,我遇到了一个问题。在代码部署期间,我需要运行bundle update / bundle install。我试图弄清楚如何运行命令。我尝试使用“bundler true”,厨师在部署时抛出错误。所以我写了一个函数

execute "bundler" do
command "bundle install"
ssh_wrapper "/home/ubuntu/.ssh/chef_ssh_deploy_wrapper.sh"
end

由于我的gemfile包含用于github和其他位桶帐户的gems和代码repo,因此它停止将其添加到known_hosts并且chef无法进一步移动。

如何避免此类问题并进行顺利部署。请建议。

2 个答案:

答案 0 :(得分:1)

通常我会使用

  • 主厨供应服务器
  • capistrano用于部署代码(包括安装宝石)

话虽如此,您可以使用ssh config配置用户帐户,以便不进行严格检查

# files/ssh_config
Host github.com
    StrictHostKeyChecking no    

# recipes/user_setup.rb
user = "someuser"
cookbook_file "/home/#{user}/.ssh/config" do
  source "ssh_config"
  owner "#{user}"
  group "#{user}"
  mode "0600"
end

在厨师部署过程中尝试捆绑安装宝石可能会遇到问题,因为厨师使用自己独立的ruby安装来执行厨师脚本,你不想捆绑到这个ruby中,而是捆绑到已安装的ruby中你指定了

我再次建议使用capistrano进行部署

还建议使用ubuntu用户使用chef进行配置,但使用辅助帐户运行rails应用程序,capistrano将使用此应用程序帐户进行部署

答案 1 :(得分:0)

您的问题来自于没有与github等建立初始ssh连接。我在.ssh / config文件中使用以下配置:

主持github  StrictHostKeyChecking没有  UserKnownHostsFile =的/ dev / null的  LogLevel的= ERROR  用户yourdeployuser  IdentityFile~ / .ssh / somefile.pem

这个的要点是,你明确地告诉ssh你不需要,或者想要在连接到github时使用ssh中的已知主机功能。