Attribute による Recipe の制御
Attribute とは
Recipe にパラメータを与える仕組みです。
Attribute は Key-Value 形式のデータで、プロビジョニング時に指定しておくと、Recipe からその値を自由に参照できます。
それにより、Recipe をより柔軟に記述できるようになります。
Attribute に値を指定する
Attibute の指定方法はプロビジョニングの方法により異なります。
Kitchen の場合
.kitchen.yml の attributes に YAML 形式で指定します。
コード ブロック | ||
---|---|---|
| ||
attributes:
application:
version: ‘2.0.0’ |
Vagrant の場合
Vagrantfile の chef.json に Hash で指定します。
コード ブロック | ||
---|---|---|
| ||
config.vm.provision :chef_solo do |chef| chef.json = {
application: {
version: ‘2.0.0’
}
} |
Knife の場合
knife node edit コマンドを実行し、Json ファイルを直接編集して指定します。
コード ブロック |
---|
"normal": {
"application": {
"version": "2.0.0"
}
} |
※ knife での運用はしていないので、間違っているかもしれません。
Attribute の値を Recipe で使用する
Recipe から Attribute の値を参照するには、node オブジェクトを使用します。
Section | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Attribute にデフォルト値を設定する
Attribute には、値が指定されなかった場合のデフォルト値をあらかじめ指定しておくことができます。
デフォルト値は専用のファイルに記述します。
このファイルは chef コマンドで生成できます。
コード ブロック |
---|
chef generate attribute ./ default |
./attributes/default.rb というファイルが生成されますので、以下のようにデフォルト値を定義します。
コード ブロック | ||
---|---|---|
| ||
default[‘application’][‘version’] = ‘1.0.0’ |
jenkins Cookbook を Attribute に対応させる