0
現在、一部のシークレット設定を含むデータバッグがあります。毎回新しい設定が行われる下図のように、それはdatabagに追加されます。私のレシピでChefの特定のインデックスまたは特定のオブジェクトから始まるEncryptedDataBagItemをループします。
{
"id": "config-databag",
"config1": {
"name": "config1",
"secret": "supersecretpassword"
},
"config2": {
"name": "config2",
"secret": "supersecretpassword"
}
}
、私はdatabagを取得し、部分テンプレートを使用してファイルにすべての設定をレンダリングするテンプレートを持っています:
secret_key = Chef::EncryptedDataBagItem.load_secret('/path/to/data_bag_key');
configurations = Chef::EncryptedDataBagItem.load('my-databag', 'config-databag', secret_key).to_hash
template 'file' do
source 'file.erb'
owner 'root'
group 'root'
mode '644'
variables(
'configurations' => configurations
)
notifies :restart, 'service[foo]'
end
file.erb
<% @configurations.each do |config| %>
<%= render 'append-config.erb', :variables => { :name => config[name], :secret => config[secret] } %>
<% end %>
追記config.erb
special config <%= @name %> : <%= @secret %>
"id"オブジェクト以外のデータ・バッグ内のすべてのデータ項目をループする方法はありますか?私は現在、Ubuntu 14.04でシェフのバージョン11.8.2を使用しています。
これは私は値が文字列だったかどうかをチェックif文を持つよりもはるかに進歩しています。どうもありがとう。 – leeeennyy