2017-11-16 4 views
1

を反復すると、ファイル属性と設定テンプレートに書き込み:私のシェフテンプレートでシェフ/ルビー:私は私のシェフで定義されたハッシュを反復処理しようとしているハッシュ配列

default['disk'] = node['block_device'].select { |i,j| j['state'] == 'running' && i != 'cdrom' }.select { |r| puts "Disk #{r}"} 

、私が呼び出しています<%= @disk%>の変数は、すべての作業が属性ファイル変数で行われています。

上記の属性は、料理本のコンパイル時に私が望む結果を表示しますが、putsメソッドを使用すると設定テンプレートに書き込まれず、代わりに空文字列が書き出されます(下記参照)。

Compiling Cookbooks... 
Disk sda 
Disk sdb 
Converging 7 resources 
.... 
+ Disk "{}" 

私はに書き込まれたディスク値としてプット方法(設定テンプレートに書き込むためにそれを必要はありません)、その後、私は、全体の取得[「block_device」](だけでなく、デバイス名の)構造を削除した場合代わりにconfigテンプレートを使用します。

また、設定テンプレート内でputsメソッドを使って遊んでみましたが、どこにもありませんでした。シェフクライアントの実行中に、配列のキー値ごとにテンプレートに新しい行を書き込むにはどうすればよいですか?コンパイル時にSTDOUTの代わりにconfigテンプレートに書きたいのですか?

+0

「ハッシュ配列」とは何ですか?ハッシュを意味しますか? – sawa

答えて

3

シェフテンプレートは、あなたが実際にそれを使用したいんErbの形式を使用します。

# recipe 
template '/asdf' do 
    # ... 
    variables disks: node['block_device'].select { |i,j| j['state'] == 'running' && i != 'cdrom' } 
end 

# template 
<%- @disk.each do |i, j| -%> 
<%= i %> 
<%- end -%> 
関連する問題