独自のラッパー クックブックでクックブックを依存関係として指定する場合nginx
、属性ファイルの厳密な読み込み順序に対処する必要があります。Chef 11 以降、すべての依存関係クックブックは、それらを必要とするクックブックの前に最初にロードされます。依存クックブック ( を含むnginx
) が読み込まれると、属性ファイルが次の順序で読み込まれ、評価されます。
attributes/default.rb
のnginx
nginx
アルファベット順の他のすべての属性ファイル
attributes/default.rb
あなたの料理本の
- クックブックの他のすべての属性ファイル (アルファベット順)
ご覧のとおり、nginx クックブックのすべての属性は、独自の属性ファイルが読み込まれる前に初期化されます。したがって、依存属性 (つまり、他の既存の属性の値を使用して初期化されるもの) は、独自のものではなく、nginx クックブックで定義された値を使用します。
ご覧のとおり、node['nginx']['source']['version']
は で初期化されnode['nginx']['version']
ているため、デフォルト値を使用しています。node['nginx']['version']
後でクックブックを変更しても、この値は変更されません。
しかし、恐れる必要はありません。解決策があります :) 特定の属性ファイルを再ロードして、属性を再設定することができます。ここで、nginx のバージョンを上書きしたい場合、これはかなり便利です。これはattributes/default.rb
、私のnginxラッパークックブックで私がしていることです:
override['nginx']['version'] = '1.6.0'
override['nginx']['source']['checksum'] = '943ad757a1c3e8b3df2d5c4ddacc508861922e36fa10ea6f8e3a348fc9abfc1a'
# Reload nginx::source attributes with our updated version
node.from_file(run_context.resolve_attribute('nginx', 'source'))