【问题标题】:ruby on rails app deployment using chef cookbook ec使用 Chef Cookbook ec 部署 Ruby on Rails 应用程序
【发布时间】:2013-10-17 13:36:39
【问题描述】:
我正在尝试使用 Chef 在 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 并且厨师无法进一步移动。
如何避免此类问题并顺利部署。请建议。
【问题讨论】:
标签:
ruby-on-rails
ruby
ubuntu
amazon-web-services
chef-infra
【解决方案1】:
通常我会使用
- 供应服务器的主厨
- capistrano 用于部署代码(包括安装 gem)
话虽如此,您可以使用 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 部署期间尝试捆绑安装 gem 时遇到问题,因为 Chef 使用其自己的隔离 ruby 安装来执行 Chef 脚本,您不想捆绑到这个 ruby 中,而是捆绑到已安装的 ruby 中你已经指定了
我再次建议使用 capistrano 进行部署
还建议使用 ubuntu 用户使用 chef 进行配置,但作为运行 rails 应用程序的辅助帐户,capistrano 将使用此应用程序帐户进行部署
【解决方案2】:
您的问题来自没有与 github 建立初始 ssh 连接等。我在 .ssh/config 文件中使用以下配置:
主机 github
StrictHostKeyChecking 否
UserKnownHostsFile=/dev/null
日志级别=错误
用户你的部署用户
身份文件 ~/.ssh/somefile.pem
这里的要点是,您明确告诉 ssh 您不需要,或者想在连接到 github 时使用 ssh 中的已知主机功能。