fbpx

[和訳] ゲスト投稿: 独自のChef Cookbookジェネレータを作成する #getchef

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

本稿は Guest Post: Creating Your Own Chef Cookbook Generator (2014/12/09) の和訳です。

本稿(訳注:原文)はコミュニティメンバーのDavid EcholsによってMedium.comに掲載されたものです。

Chef Development Kit (Chef DK)にはすばらしいツールであるchefがあります。このコマンドラインユーティリティを使えば、効率的なChef開発のためにいろいろなことができます。今回はその中でも最も有益なものの一つである、独自のCookbookジェネレータを作成する方法を見てみましょう。

あまり詳しくご存知ない方のために説明しますと、Chef DKの中には様々なツールに入ったジェネレータがいくつかあります。例えば、次のコマンドを使用して新たにCookbookを作成できます:


berks cookbook my_cookbook_name


chef generate cookbook my_cookbook_name

また、次のコマンドでTest Kitchenの設定を初期化することもできます。


kitchen init

このコマンドを実行してから30分間は恐らく、細かい修正をしたり、Organizationの雛形を追加したり、.kitchen.ymlファイルを設定したりする必要があるでしょう。それは決して楽しいことではありません。特にChefを使い始めたばかりのメンバーにとっては大変です。

それらの代わりに独自のCookbookジェネレータを作成し、社内のメンバーに使ってもらいましょう。コマンドラインに-g オプションを使ってCookbookコードジェネレータを使うことができます。実際のコマンドは次のようになります。


chef generate cookbook my_cookbook_name -g ~/chef/pan

次のような結果が返ってきます。


FlGPv0jKFEF0CJJVBVHmw

みなさんは料理を始める時に最初に何をしますか? まずフライパンを取り出すでしょう。そこで、Cookbookジェネレータを「pan (訳注:フライパン)」と呼ぶことにしましょう。短くて覚えやすい名前で、Chefツールキットでもこれまで使われていません。「コードジェネレータ(code_generator)」という呼び名は個人的に冗長的な感じがしますので、こちらの名前を使うことにします。

組織内でこのコードジェネレータを作成することで、次のような大きなメリットがあります。

  • Cookbookのレイアウト方法を標準化できます。
  • パブリックCookbookには入れることができない、独自のサンプルを入れることができます。
  • コードジェネレータを更新するだけで、標準化をさらに推し進めることができます。
  • 重要な情報、組織特有の情報などを.kitchen.ymlに入れることで、開発者はKitchenを使って即座に新しいCookbookをテストできます。
  • コードジェネレータをコードレビューツールとして使用できます: 「これがジェネレータのやり方なので、この方法で実施してください」
  • 組織内のワークフローに矛盾がある場合、それを取り上げる重要な役割を担います。

これらはほんの一例です。また、作成方法も簡単です。私がこれまでに作成したジェネレータのサンプルのリンクは以下の通りです。作成を始める際の参考にしてください: https://github.com/echohack/pan

私が作成したもので気に入ったものがなければ、Chef DKにあるものを利用することもできます:

(ChefDKディレクトリ)/embedded/apps/chef-dk/lib/chef-dk/skeletons/code_generator

Macの場合:

/opt/chefdk/embedded/apps/chef-dk/lib/chef-dk/skeletons/code_generator

Chef DKをインストールした場所によっては、この通りではありません。

いずれにしても、みなさん自身と組織に適合した独自のものを作成してください。Chefに詳しい方にとっては簡単なことだと思います。recipes/cookbook.rbを編集して、初期設定から不要なものを削除するだけです!

それでは「pan」でのクッキングをお楽しみください。

新規CTA