0

シェフを使用して Ruby on Rails アプリケーションをデプロイしようとしていますが、問題に直面しています。コードのデプロイ中に、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 やその他のビット バケット アカウント用の gem とコード リポジトリが含まれているため、known_hosts への追加が停止し、chef は先に進むことができません。

このような問題を回避し、スムーズな展開を行うにはどうすればよいでしょうか。よろしくお願いします。

4

2 に答える 2

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

シェフのデプロイ中にインストールgemをバンドルしようとすると問題が発生する可能性があります。シェフはシェフスクリプトを実行する目的で独自の分離されたルビーインストールを使用しているため、このルビーにバンドルするのではなく、指定したインストール済みルビーにバンドルしたくない

繰り返しますが、展開にはカピストラーノを使用することをお勧めします

また、chef を使用したプロビジョニングには ubuntu ユーザーを使用することをお勧めしますが、Rails アプリケーションを実行するためのセカンダリ アカウントである capistrano は、このアプリケーション アカウントを使用してデプロイします。

于 2013-10-17T15:32:34.583 に答える