ページ ツリー

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

目次

Attribute による Recipe の制御

Attribute とは

Recipe にパラメータを与える仕組みです。
Attribute はプロビジョニング時に指定できる Key-Value 形式のデータで、Recipe からその値を参照できます。

Attribute の Key は Cookbook の製作者が自由に決定でき、その用途も自由です。


何を Attribute にするか

Cookbook の設計によりけりですが、たいていの場合は次の項目は Attribute にすることが多いです。

  • アプリケーションのアーカイブやパッケージの URL
  • アプリケーションのアーカイブやパッケージのバージョン
  • アプリケーションをインストールするユーザー
  • アプリケーションのインストール先


デフォルト値を決める

Attribute にはデフォルト値をあらかじめ指定しておくことができます。にはあらかじめデフォルト値を指定しておくことができます。

Attribute のデフォルト値は専用のファイルに記述します。
このファイルは chef generate attribute コマンドで生成できます。attribute コマンド で生成できます。

コード ブロック
$ chef generate attribute ./ default

これで ./attributes ディレクトリに default.rb という名前でファイルが生成されます。


このファイルに、以下のようにデフォルト値を定義します。生成されたファイルに、以下のようにデフォルト値を定義します。

コード ブロック
title./attributes/default.rb
default[‘application’'application'][‘version’'version'] = ‘1'1.0.0’

...

0'


Attribute の Key は default[<Cookbook 名>][<任意の Attribute 名>] とするのが一般的なようです。
jenkins Cookbook であれば、次のようなイメージです。

コード ブロック
default['jenkins']['version'] = '1.0.0'


Attribute の値を Recipe で使用する

Recipe から Attribute の値を参照するには、node オブジェクト を使用します。

 

例えば、Kitchen で次のように Attribute を指定したときは、

コード ブロック
title.kitchen.yml
attributes:
  application:
    version: '2.0.0'

 

Recipe では次のように値を参照します。

コード ブロック
title./recipes/default.rb
application_version = node['application']['version']
 
# application_version == '2.0.0'


ヒント

Recipe では cookbook_name メソッド を利用して自分の Cookbook の名前を取得できます。

コード ブロック
application_version = node[cookbook_name]['version']

 

Attribute に値を指定する方法

Attibute の指定方法はプロビジョニングの方法により異なります。

Kitchen の場合

.kitchen.yml の attributes に YAML 形式で指定します。

コード ブロック
title.kitchen.yml
attributes:
  application:
    version: '2.0.0'

Vagrant の場合

Vagrantfile の chef.json に Hash で指定します。

コード ブロック
titleVagrantfile
config.vm.provision :chef_solo do |chef|
  chef.json = {
    application: {
      version: '2.0.0'
    }
  }
end

Knife の場合

knife node edit コマンドを実行し、Json ファイルを直接編集して指定します。

...

※ knife での運用はしていないので、間違っているかもしれません。

デフォルト値を決める

Attribute にはデフォルト値をあらかじめ指定しておくことができます。

Attribute のデフォルト値は専用のファイルに記述します。
このファイルは chef generate attribute コマンドで生成できます。

コード ブロック
chef generate attribute ./ default

これで ./attributes ディレクトリに default.rb という名前でファイルが生成されます。

このファイルに、以下のようにデフォルト値を定義します。

コード ブロック
title./attributes/default.rb
default[‘application’][‘version’] = ‘1.0.0’

 

Attribute の値を Recipe で使用する

Recipe から Attribute の値を参照するには、node オブジェクトを使用します。

例えば、Kitchen で次のように Attribute を指定したときは、

コード ブロック
title.kitchen.yml
attributes:
  application:
    version: '2.0.0'

Recipe では次のように値を参照します。

...

title./recipes/default.rb

...

 

実際に Attribute を使う

ここまでで、なんとなく Attribute というのがどういうものかがわかったら、前回作成した Cookbook を Attribute に対応させてみましょう。
次のページ へ進んでください。