0

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

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

由于我的 gemfile 包含 github 和其他位存储桶帐户的 gem 和代码仓库,因此它停止将其添加到 known_hosts 并且厨师无法进一步移动。

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

4

2 回答 2

1

通常我会使用

  • 供应服务器的厨师
  • capistrano 用于部署代码(包括安装 gems)

话虽如此,您可以使用 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

您可能会在 Chef 部署期间尝试捆绑安装 gems 时遇到问题,因为 Chef 使用其自己的隔离 ruby​​ 安装来执行 Chef 脚本,您不想捆绑到这个 ruby​​ 中,而是捆绑到您指定的已安装 ruby​​ 中

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

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

于 2013-10-17T15:32:34.583 回答
0

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

主机 github StrictHostKeyChecking no UserKnownHostsFile=/dev/null LogLevel=ERROR User yourdeployuser IdentityFile ~/.ssh/somefile.pem

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

于 2014-01-29T19:06:06.333 回答