22

現在Capistranoを使用しているパッセンジャーを使用して、nginxで動的に構成されたレールアプリのインスタンスのかなり複雑な展開があります。スタック、レイヤー、インスタンス、動的アプリのデプロイの作成から、Opsworks でのプロセス全体を自動化しようとしています。既存の Opsworks レシピはどれも私が必要としているものに近くないので、独自のカスタム クックブックを開始しました。test-kit と vagrant を使用してそれらをテストしようとしていますが、Opsworks クックブックにはローカルで使用するにはカスタム依存関係が多すぎます。そのため、Opsworks クックブックに依存しない独自のレシピのみを使用して車輪を再発明するか、AWS でクックブックをテストしようとしていますが、これは遅くて高価です。

Opsworks でカスタム クックブックの開発を行っている人はいますか? もしそうなら、どのようにテストしていますか? コミュニティのクックブックを使用していますか? もしそうなら、Opsworks に取り組むのにどれくらいの苦労がありましたか?

4

6 に答える 6

6

多くのカスタム クックブックと vagrant で Opsworks を使用しています。テスト範囲は完璧とは言えませんが、非常にスムーズに機能し、コミュニティのクックブックにも適応しています。私たちのクックブック リポジトリは公開されています: https://github.com/til/easybib-cookbooks

このレポの興味深い部分は次のとおりです。

  • opsworks のレイヤーで複数のレシピを指定する代わりに、各レイヤーのエントリ ポイントとしてロール レシピを使用します: https://github.com/till/easybib-cookbooks/blob/master/easybib/recipes/role-nginxapp- api.rb
  • カスタム ライブラリ関数を使用して、レシピの実行が AWS にあるか Vagrant にあるかを確認します。
  • すべての opsworks 固有のクックブック/プロバイダーは通常、 deploy-cookbook でのみ使用されます。これis_awsは true の場合にのみ含まれます。それ以外の場合は、デフォルトのアプリケーション デプロイにフォールバックします。

クックブックを参照すると、質問に対するヒントがさらに得られるはずです。Travis でクックブックをテストしますが、opsworks クックブックはまったくテストしません。私は現在、それらをテスト実行に統合する方法についていくつかのアイデアをいじっていることに注意する必要がありますが、それらのプロバイダーがなければ、デプロイクックブックをテストすることはほとんど不可能です.

于 2014-03-30T22:47:20.943 に答える
6

Opsworks は、Chef 11.10 と Berkshelf ( http://berkshelf.com/ ) をサポートして、カスタム クックブックの使用を可能にする依存関係を管理します。多くの。より簡単に。

ローカル テスト用の Vagrant と Chef Solo を備えた Test Kitchen ( https://github.com/test-kitchen/test-kitchen )にはかなり満足しています。

さらに、スタック設定ページから Opsworks スタックで特定のレシピを手動で実行できます。こちらをご覧ください: http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-manual.html .

カスタム JSON を使用して、Opsworks のデプロイ中にクックブック テストを実行することもできます: http://docs.aws.amazon.com/opsworks/latest/userguide/troubleshoot-debug-test.html

于 2014-05-06T12:42:11.340 に答える
1

Travis-ci と sous-chef をチェックしてください。クックブックなどのテストに適していることがわかり、opsworks のデプロイ構成も含まれています。

https://github.com/michaelklishin/sous-chef http://docs.travis-ci.com/user/deployment/opsworks/

于 2014-03-27T09:48:07.910 に答える
0

Chef+Kitchen+Vagrantを使用してこれを解決できました

これが私のラッパーです: https://github.com/elitechance/opsworks-cookbooks-wrapper

以下、テスト方法

git クローンhttps://github.com/elitechance/opsworks-cookbooks-wrapper.git

git クローンhttps://github.com/aws/opsworks-cookbooks.git

cd opsworks-cookbooks-wrapper

cp .kitchen.sample.yml .kitchen.yml

cp Berksfile.sample Berksfile

cp メタデータ.サンプル.rb メタデータ.rb

最後のコマンドは、OpsWorks NodeJs セットアップ レシピをシミュレートします。詳細については、を参照.kitchen.sample.ymlしてください。

$ chef exec kitchen setup

既知のバグ

を初めて実行する$ chef exec kitchen setupと、次のようなエラーが表示されます。

Running handlers: [2016-04-08T17:08:34+00:00] ERROR: Running exception handlers Running handlers complete [2016-04-08T17:08:34+00:00] ERROR: Exception handlers complete Chef Client failed. 01 分 02 秒で 43 のリソースが更新されました [2016-04-08T17:08:34+00:00] 致命的: スタックトレースが /tmp/kitchen/cache/chef-stacktrace.out にダンプされました [2016-04-08T17:08:34] +00:00] FATAL: バグレポートを提出する場合は、stacktrace.out ファイルの内容を提供してください [2016-04-08T17:08:34+00:00] ERROR: ruby​​_blockFallback for remote_file[/tmp/rubygems-2.2 .2.tgz] にエラーがありました: NoMethodError: remote_file/tmp/rubygems-2.2.2.tgz にエラーがありました: NoMethodError: undefined method `to_sym' for [:create]:Array [2016-04-08T17:08:34 +00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef 実行プロセスが正常に終了しませんでした (終了コード 1)

もう一度実行してください:

$ chef exec kitchen setup

于 2016-04-11T14:56:12.713 に答える