web-dev-qa-db-ja.com

シェフのレシピをテストするためのベストプラクティスは?

私のチームは多数のシェフの料理本を作成しています。ノードが適切に構成されていることを確認するためのテストの作成を開始できるように、どのメソッドとフレームワークを調査する必要があるのか​​と思っていました。

18
linusthe3rd

これについては、(また) Vagrant を調べることもできます。
A video は、VagrantとChefクックブックの組み合わせを使用する方法を示しています。 Opscodeサイト にはVagrantとChef専用のページがあります(2015-01-23の更新:ページが消えました...)。

7
Henk

cucumber-chef Ruby gemと最近リリースされた本Nelson-Smith et al-そのgemを利用する「Chefによるテスト駆動型インフラストラクチャ」- http://www.cucumber -chef.org/

私のgithubウォッチリストからこれを思い出しただけです: https://github.com/gregretkowski/vmth/

VMTH(仮想マシンテストハーネス)は、インフラストラクチャの自動化(パペットポリシー、シェフレシピ、リリースデプロイメントスクリプトなど)を単体テストするメカニズムを提供します。これは、モダンVMモニター(qemuなど)の機能を使用します)システム状態のスナップショットを作成し、各テスト後にその状態をリセットして、一連のテストをVMインスタンスですばやく連続して実行できるようにします。

3
pfo

ここでの回答のいくつかは少し古いようです。 CIとローカルテストの場合は、 Test Kitchen のようなテストハーネスツールを活用することを検討します。これは、Vagrantを既に使用している場合にサポートします。

EC2、Digital Ocean、Vagrant、Dockerなど、今日ある多くのクラウドおよび仮想化ソリューションに対してクッククを実行できます。

また、現在存在する多くのインフラストラクチャテストツールの1つを実行できるプラグインもあります。

  • serverspec-最も人気のあるテストフレームワーク。
  • goss -YAML、シンプルな自己完結型バイナリ、非常に高速。
  • inspec-serverspecが改善されたと考えてください(シェフが書いたもの)。
  • testinfra-Pythonベースのサーバーテストフレームワーク。
1
Ahmed Elsabbahy

いくつかのオプションがあります。

OpscodeはChef開発ロードマップ "no-op" をサポートしており、テストに役立ちます。 argue "no-op"は必ずしも必要なことを行うわけではありませんが、機能に対する欲求を理解しています。

1
jtimberman

私の経験では、これを実際に行う唯一の方法は、ステージング環境と注意深い開発プラクティスを使用することです。実行する実際の作業をモックアウトすることは信じられないほど厄介で壊れやすく、コミットまたはプッシュで実行されるCIテストスイートは、書き込みと保守の労力のロットです。 (Chefはおそらくこれが私の主な経験であるPuppetよりもはるかに優れていますが)、実行するのに途方もない時間をかけます。

[〜#〜]編集[〜#〜]

これを書いた直後、私は突然、Unionファイルシステムと大量の足場を使用して、Chef/Puppetレシピの合理的に効率的な「ユニット」テストを行う方法があるかもしれないことに気付きました。しかし、私はこの分野ですでに誰もが行ったことを見つけることができません。自分でプロジェクトを見つけたばかりかもしれません。

0
womble