fbpx

[和訳] Chef Development Kit #opschef_ja #getchef_ja

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本項は Chef Development Kit (2014/04/15) の和訳です。

シェフのみなさん、こんにちは。
こちらは Chef Development Kit (別名 Chef DK) の初バージョンです。

Chef DK とは

Chef DK は、Chef をコーディングする際に必要な全ての開発ツールを含んだパッケージです。Chef コミュ二ティによって開発された一流のツールと Chef Client を組み合わせたものです。

Chef DK には次の機能があります。

  • Cookbook 依存関係が管理でき、必要な Cookbook を正しい方法で作成できる、最新の Berkshelf 3.0
  • 組み込みテストに利用できる、Cookbook のデファクト lint ツール FoodCritic、Cookbook のユニットテストフレームワーク ChefSpec、コード化されたインフラに対する優れたインテグレーションテストフレームワーク Test Kitchen
  • Workstation に対して Chef Client を簡単に設定・アップグレード。
  • Chef の新しいワークフローツール chef の導入。

コミュニティによって開発されたなじみのあるツールが Chef 公式の製品内に取り入れられています。

新しい機能

新しいワークフローツール: "chef"

Chef の最も強力な特徴の1つは柔軟性です。ユーザが各々のビジネスのために動かす必要のあるテクノロジースタックにおけるさまざまなワークフローに対応して、Chef は有機的に発達してきました。この有機的な成長の副作用として、Chef に初めて触れた利用者は各々のよい点や悪い点に直面することになります。これは Chef のとっつきやすさを損ねていました。

Chef DK はこのパラダイムを打ち破ろうとしています。Chef DK は chef という新しいツールを含んでいます。このツールは「合理的な Chef ワークフロー」を目標としてデザインされています。Chef DK は新しいユーザに合理的なワークフローを提供しながら、高度なChefユーザに対しても高い柔軟性を保っています。

我々はこの目標を達成するために長い時間をかけました。我々が現在提示できるいくつかの特徴は次の通りです。

  • 一般的に用いられている Cookbook パターンをサポートする設定可能なジェネレータ。
  • Berkshelf、Knife と Chef Client の深い統合。
  • 組み込み開発とテスト環境をクラウド上にプロビジョニング。

バージョン0.0.1 では、2つの小さな機能の実現を目標としています。

  • chef gem: Chef DK の設定に gem やknife プラグインを容易にインストールすることができます。
  • chef generate: Chef による簡潔な Cookbook を生成します。

余談

このコマンドに chef と命名したことについて説明します。Chef パッケージをインストールした時に "chef" という名前のコマンドが存在しないことに驚かれた方も多いでしょう。我々は開発したコマンドの1つに "chef" と命名しようと考えたことがありますが、適切なものがありませんでした。そのように命名されるコマンドは、ユーザが利用する主要なコマンドであることでしょう。逆に言えば、あるコマンドが "chef" と命名されれば、現状はどうあれ、いずれ誰もが使うコマンドになるはずです。だから "chef" という名前にしました 🙂

継続的デリバリである

我々は継続的デリバリを強く支持しています。我々は継続的デリバリが他に負けない利点だと確信しています。また、もし新しい仕様やバグフィックスが配信されるのは2〜3か月も待たなければいけなかったらどうでしょう?

Chefのユーザのために、弊社のAwesome Release Engineering (ARE)チームと綿密に連携し、よくテストされた Chef DK を毎日配信するための継続的インテグレーションのクラスターを作成しました。つまり、Chef DK に対するあなたの貢献がマージされた次の日にはそれが配信されるということです。

詳しくは ChefConf 後に Chef DK に関するトピックを参照してください。

組み込み性能

我々は早さを強く支持しています。Cookbook の依存関係を解決するのに何分も待ったり、knife -v が完了するのに 10 秒近くも待ったりしたいですか?

Chef DKを開発する時には、性能を優先課題としています。応答性のよいツールがWorkstationにあることは、すばらしいユーザ体験を獲得するための第一歩です。Chef DKの性能に貢献するものを紹介します。

Berkshelf での gecode 利用

Berkshelf チームと Chef での最大のコラボレーションは依存関係の解決です。Berkshelf 3.0 は依存関係の解決器として gecode を取り入れました。ChefConf ではこれについて色々な情報を聞けるでしょう。要するに、この努力によって依存関係がもっと早く解決されて、やはり依存関係の解決器として gecode を使用している Chef Server に匹敵するほどになります。

どのぐらい早いかって? Chef 社のプラットフォーム Cookbook の依存関係を解決する時の gecode とピュア Ruby の実行時間(秒単位)を比較できます。

Screen-Shot-2014-04-14-at-10.09.35-PM

appbundler

appbundlerは、Gemfile.lock を用いる bundler によって選定されたバージョンにアプリケーションの依存関係を決定します。これによって、rubygems は実行時で依存制限を解決する必要がありませんから、アプリケーションはもっと早く動作することができるようになります。この手法は互換性がない依存関係からアプリケーションを守ることもできるようになります。Chef DK に含まれている全てのバイナリは appbundler を使用しています。より詳しい情報はこちらでご覧下さい。

サポートするプラットフォーム

Workstation のツールですので、Chef DK は全ての一般的な Workstation プラットフォームをサポートしています。ChefDK の最初のバージョンは次の OS で構築とテストが行われました。

  • Mac OS X 10.9
  • Ubuntu 12.04
  • Ubuntu 13.10
  • RHEL 6

おっと、Windows を忘れていました。次のバージョンでは Windows を考えましょう。Windows 7 と Windows 8.1 のためのバージョンを開発中です。

Chef DKの将来

誰にとっても合理的なChef ワークフロー」という意欲的な目標にとって我々は爪を噛むような思いをしてきました。しかしながら、Chefコミュニテイのおかげで、この目標を達成できそうです。この目標を達成するための次の大きなステップは、合理的な Chef のワークフローの原型を作成したり、議論や作業をみなさんと一緒に続けていくことです。
将来的にオンラインディスカッションを公開する予定です。弊社の全員は今週 San Francisco での ChefConf2014 にいます。合理的な Chef ワークフローについて議論があれば、スタッフのTシャツを着ている人をつかまえて、遠慮なくご相談ください。

もちろん、Chef DK はオープンソースです。お気軽に GitHub の Issue をオープンしたり、send PR してください。これは間違いではなく、GitHub の Issue でということです。より簡単に貢献とフィードバックできるように、我々は貢献と Issue をトラックキングするプロセスを取り組んでいます。詳細はしばらくお待ちください。それまでお気軽に GitHub上の chef-dk プロジェクトの Issue を使ってください。

素晴らしいシェフたち

ここまでこの長い投稿をお読みくださり、ありがとうございます。多くのすばらしい機能が Chef DK に含まれました。すべての名前を述べられませんが、こちらは多大な貢献をされた方々です(もし書き忘れた名前があったら申し訳ありません)。

  • Berkshelf 3.0 をリリースしたばかりの Berkshelf チームの Jamie 氏、Michael Ivey 氏、SethV 氏。
  • test-kitchen を書き、Chef DK に素晴らしいフィードバックをした Fletcher 氏。
  • FoodCritic を書いた Andrew 氏と、ChefSpec を書いた Seth Vargo 氏。
  • 彼らのサポートと有益な議論をした Mike 氏、Jon 氏、Pete 氏、Noah 氏、JohnK 氏。
  • よく動作する Jenkins を設定した我々の Awesome Release Engineering Team の Yvonne 氏、Seth 氏、Seth 氏。
  • 綺麗なダウンロードページを作成した Nathan Smith 氏。

こちらで Chef DK を取得できます。質問や問題があれば、遠慮なくご連絡ください。

---- Chef Client チーム: Dan DeleoLamont GranquistClaire McQuinSerdar Sutay
新規CTA