複数の環境があり、環境JSONで属性が設定されているシェフシステムがあります。
クックブックの属性ファイルとレシピからこれらにアクセスするのに問題があります。
環境ファイルはどのように見えますか?デフォルトまたはオーバーライド属性を設定していますか?デフォルトを設定している場合、これは属性チェーンの優先度レベルがかなり低いため、レシピまたはロールによってオーバーライドされる可能性があることに注意してください。
属性の優先順位は、低いものから高いものへと次のとおりです。
上から:
最終的に、Chefレシピで環境の属性を使用することができました。次のような環境があるとしましょう。
{
"name": "QA",
"description": "QA environment",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"comp_rsyslog": {
"filetag_env": "compqa"
}
},
"override_attributes": {
}
}
また、サービスのテンプレート構成ファイルでfiletag_env属性を使用して、環境属性を渡す必要があります。
私がconferbファイルで行う方法は、次のようになります。
$InputFileTag <%= node['comp_rsyslog']['filetag_env'] %>,<%= node['rsyslog']['filetag1'] %>
<%= node['rsyslog']['filetag1'] %>
は、レシピ属性のファイルで定義されています。
default['rsyslog']['filetag1'] = 'comp_service'
結果は、次のような内容の/etc/rsyslog.d/comp_service.conf
内のファイルになります。
$InputFileTag compqa,comp_service.
正しい順序は、次のとおりです シェフのドキュメントサイトから :