[和訳] ゲスト投稿: 独自の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
次のような結果が返ってきます。
みなさんは料理を始める時に最初に何をしますか? まずフライパンを取り出すでしょう。そこで、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」でのクッキングをお楽しみください。