我正在尝试使用厨师在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无法进一步移动。
如何避免此类问题并进行顺利部署。请建议。
答案 0 :(得分:1)
通常我会使用
话虽如此,您可以使用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中的已知主机功能。