[和訳] Ohai 7.0 リリース候補版 #opschef_ja #getchef_ja
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本項は Ohai 7.0 Release Candidate (2014/1/20) の和訳です。
シェフのみなさん、こんにちは。
今日はOhaiの次期メジャーバージョンのリリース候補版を公開しました。このリリース(Ohai 7)は従来のアーキテクチャ上の制限を緩和することによって、たとえばカスタムプラグインの作成が簡単になるなど、将来的な改善が期待できるものです。
このリリースをインターンシップの間に実現してくれたClaire McQuin氏とTheodore Nordsieck氏に感謝します。
新しい機能
Ohai 7の主な二つの新機能を紹介します。
新しいOhai DSL
Ohai 6は非常に役に立つものです。しかし、このバージョンは重要なアーキテクチャ上の制限があるため、面白いアイデアを実現することができませんでした。例えば収集したデータが重要なものか任意なものか識別することなどです。Ohai 6がプラグインをコードのモノリシックブロックとして取り扱っているからです。
Ohai 7では新しいDSLを導入しました。そのDSLはカスタムプラグインを書きやすく、コードをよりよく組織化でき、将来の設定が簡単になります。以下はOhai 7プラグインのイメージです。
Ohai.plugin(:Name) do
provides "attribute", "attribute/subattribute"
depends "kernel", "users"
def a_shared_method
# some Ruby code that defines the shared method
attribute Mash.new
end
collect_data(:default) do
# some Ruby code
attribute Mash.new
end
collect_data(:windows) do
# some Ruby code that gets run only on Windows
attribute Mash.new
end
end
新しいDSLに関して、2つの大切なことがあります。
- プラットフォーム固有のコード管理を容易にするためのcollect_data()ブロック
- プラグイン間の依存関係を容易に管理するためのdepends文とprovides文
新しいDSLについてはこちらをご覧ください。
Attributeの名前をベースとしたユーザインタラクション
以前は各プラグインからデータを収集するには、ユーザは用いるプラグインのファイル名を知っている必要がありました。
# Ohai 6 には、passwd.rb というファイル名の passwd プラグインがあり、
# 'current_user' という Attribute を設定します。
# この Attribute のデータを使うには、プラグインはファイル名を知っている必要があります。
require_plugin("passwd")
Ohai7では、ユーザインタラクションはAttributeの名前をベースとしています。収集したいデータのAttributeの名前を指定するだけです。Ohai 7はどのプラグインが要求されたのか理解して、対象のデータを収集します。
# Ohai 7 では、プラグインは current_user をどのように見つけるのか知っている必要はありません。
depends 'current_user'
Ohaiの将来
Ohai 7は将来のChefによりよい体験を実装できるように作られています。将来の Ohai のために我々が考えているいくつかのアイデアを紹介します。
- システムの情報を、Chef の実行に必要な重要なものと、情報のみの任意なものに分類する。
- 重要な情報が収集されない場合には例外処理を提供します。
- Ohai によって Node で収集する情報を制限する。
後方互換
Ohai 7 は既存の Ohai 6 プラグインに後方互換性を持ちます。ただし、新機能や将来の機能はバージョン 6 のプラグインには適用されません。すべての既存のプラグインは引き続き Ohai 7 で動作します。しかしながら、Ohai の新機能や将来の機能を利用できるように、できるだけ早く Ohai 6 のプラグインを Ohai 7 に移行することをお勧めします。
我々が目指していることの1つとして、バージョン 6 のプラグインをバージョン 7 に容易に変換できることがあります。プラグインを新バージョンに変換するために行うべきチェックリストを紹介します。
- require_plugin() の呼び出しを depends 文に変換します。
- dependsステートメントにrequire_plugin()を変えます。
- collect_data()ブロックにプラグインロジックを移行します。
これらのステップを次のバージョン 6 プラグインに行ってみましょう。
provides 'my_app'
require_plugin("kernel")
my_app Mash.new
my_app[:version] = shell_out("my_app -v").stdout
my_app[:message] = "Using #{kernel[:version]}"
次のようになります。
Ohai.plugin(:MyApp) do
provides 'my_app'
depends 'kernel'
collect_data do
my_app Mash.new
my_app[:version] = shell_out("my_app -v").stdout
my_app[:message] = "Using #{kernel[:version]}"
end
end
Chefへの統合
このバージョンは Ohai のメジャーバージョンリリースなので、メジャーバージョンをあなたの商用環境に適用する前に、あらゆる問題を確認するために Chef への統合はいつもより長い時間をかける予定です。
現時点で Ohai 7 は、2014年4月末の公開が予定されている Chef 11.12.0 に統合される予定です。
お試し
Ohai 7 リリース候補版は、Chef 11.8.2 のアドオンとして提供しています。 Ohai 7 を試してみたければ、こちら(link)から Chef Client 11.8.2をインストールして、次のコマンドを実行してください。
# For windows systems
gem install chef -v 11.8.4.ohai7.0
# For other systems
sudo /opt/chef/embedded/bin/gem install chef -v 11.8.4.ohai7.0
フィードバック
Ohai 7に関するトラブルおよびフィードバックがあれば。いつでもお気軽にご連絡お願い致します.