【问题标题】: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 中的已知主机功能。

      【讨论】:

        猜你喜欢
        • 2015-01-19
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 2023-03-29
        • 2016-01-06
        • 1970-01-01
        • 2016-12-25
        • 2018-06-10
        相关资源
        最近更新 更多