2016-03-30 6 views
5

Opsworks Chef v11のレシピをChef v12に変換しようとした人はいますか?Opsworks Chef 12 recipes

Imは、シェフ11上の複数のスタックを実行しているとAWSは、そのようなrails層のレシピとしてのopsworksアプリ層を、落としているので、我々(opsworksユーザーが)今deployユーザーの作成を担当している12をシェフにそれらのいくつかの変換を開始することを決定しましたgit checkout reposをdeploy_toなどに変更します。

柔軟性があり、名前空間の競合がなくなりましたが、opsworksが私たちに無料で提供してくれたすべての優れたものが欠けています。

誰かがシェフ12とオープンソースのレシピを変換した場合は不思議ですか?さもなければ、コミュニティはこれらのレシピに全く興味がありますか?私はここで一人ではないと確信しています。

ありがとうございます!

答えて

0

私は古いOpsWorksの料理本についてはわかりませんが、普通のシェフを使用してRails(やその他の)を行ういくつかの例については、https://github.com/poise/application_examples/をチェックしてください(OpsWorksでもうまくいくでしょう)。

+1

ありがとう、それは良い例ですが、その非常に基本的なものです。 私がOpsworksのレシピの利点を述べたとき、私は 'deploy'レシピがカピストラの展開('/srv/www/app/releases'、 '/ srv/www/app/shared'、'/srv/www/app/current')、 'ssh_key'で各アプリケーションの' deploy'ユーザを準備し、 'database.yml'を環境に関する正しい値に置き換えてください。 – vlgs

+0

あなたはそのルートに行くことができますが、私はそれをお勧めしません。 'deploy'リソースは価値よりも脆弱です。 – coderanger

+0

さて、ありがとう@コーデンガー! – vlgs

3

opsworks_ruby cookbook on the Supermarketは基本的に必要なものすべてです。

このレシピと他の非OpsWorksレシピとの主な違いは、これがこれでOpsWorksの設定を行います。レシピをカスタマイズする必要はありません。アプリとレイヤーの名前が正しく指定されていることを確認してください。データベースとRDSの設定を含め、そこからすべてをビルドします。

主な相違点は、OpsWorksのレイヤーは「Ruby対応」ではないため、Rails-ishやRuby-ishのフィールドを持たず、それらを別の場所で管理する必要があるということです。 ENV varsのロード方法は少し異なります。

また、AWSのCheps 12 for OpsWorksの実装についても必ずお読みください。彼らは技術的に2つのシェフ料理ブックを運営しています。エージェントの管理は最新のもので、ユーザーの読み込み(sshの場合)、監視の配線などが含まれます。残りは管理する必要があります。

私たちは、巨大な料理ブックのものをスーパーマーケットの個々の料理ブックに置き換えたり、書き直したりしています。たとえば、古いChef 11のopsworks_initial_setupには、ネットワークとLinuxの設定を微調整するためのいくつかのことがありました。我々はこれを再作成しました。

また、例えば、該当するユーザーを展開使用しない:必要に応じて

$ ps -eo user,command USER COMMAND // snip root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf aws opsworks-agent: master 10820 aws opsworks-agent: keep_alive of master 10820 aws opsworks-agent: statistics of master 10820 aws opsworks-agent: process_command of master 10820 deploy unicorn_rails master --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[0] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[1] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[2] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[3] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf nginx nginx: worker process nginx nginx: worker process

をほんの少しのプロセス出力の一例が、ルートのブーツの事を、各プロセスは、権利を制限するために、独自のユーザーに利用し、アクセス。

+0

あなたはbuild-essentials、application_rubyなどを使用するためにopsworksを指定する必要がありますか?あなたのREADMEで言うように、それは依存関係ですが、それらをレイヤーで最初に実行するかどうかは異なりますか? – pjammer

+0

それはすべてあなたのためにインストールされます。https://github.com/ajgon/opsworks_ruby/blob/fa8e605e0cbf954e73ffca736a6306cd61c037a8/recipes/setup.rb#L16 – databyte

+0

を参照してください。私のシェフレポにレポをアップロードし、依存関係とS3からの引き込み?私は私のレポからこの仕事を得ることができませんでした。それはもちろん、LinuxのAMIで動作しないWindowsの料理本を求め続けている... – RestlessWeb

1

私は最も一般的な方法は、スーパーマーケットの "アプリケーション"料理本を使用することです:https://supermarket.chef.io/cookbooks/application/versions/4.1.6(これはまたポアーズに基づいています)。注意:〜バージョン4を使用すると、v5のほとんどの優れた機能が削除されました。

これは、ディレクトリ構造を作成し、異なる展開戦略をサポートし、いくつかのイベントを提供します。 私の意見では、Opsworksのドキュメントは、「deploy with opsworks and chef12」のトピックに関しては半完成です。guiの情報(repo-urlなど)はnodeオブジェクトではなくアプリケーションからのデータバッグ。デバッグのために、/var/chef/runs/<run-id>/ディレクトリを調べて、どこから入手可能かを調べることが非常に役に立ちます。アイデアを示し 小抜粋:

app = search("aws_opsworks_app").first 
application "#{app['shortname']}" do 
    owner 'root' 
    group 'root' 
    repository app['app_source']['url'] 
    revision 'master' 
    path "/srv/#{app['shortname']}" 
end 

がこの/srvにリリース/カレントディレクトリ構造を作成してコードをチェックアウトします。注意:GUIで指定したssh-keyは何らかの形で自動的に適切な場所に置かれると考えることができます。そうでなければ、あなた自身でそれを世話する必要があります。 chef11 opsworks料理の本を確認してください:https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/scm_helper/libraries/git.rb

関連する問題