web-dev-qa-db-ja.com

変数をchefテンプレートに渡す正しい方法はどれですか?

この公式ドキュメントを見ると、 https://docs.chef.io/resource_template.html 「{」、「({」、または「( "変数のスコープを設定します。

違いを説明している場所や、あるフォームを他のフォームよりも使用する理由がわかりません。レシピを実行するときに実際に何か違いはありますか?

例1:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables(
  :config_var => node['configs']['config_var']
)
end

例2:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables{
  :config_var => node['configs']['config_var']
}
end

例3:

template '/tmp/config.conf' do
  source 'config.conf.erb'
  variables({
  :config_var => node['configs']['config_var']
})
end
5
cb2

これはRuby事であり、シェフの事ではありません。

( :key => value )を使用すると、暗黙のハッシュが渡されます。 Rubyは、括弧内に表示されるものがハッシュに似ていると判断し、自動的にハッシュに変換します。

{ }を使用すると、実際にはブロックが渡されます。 Ruby次に、ブロックを実行し、ブロックの結果を引数として返します。この表記は、トラブルを引き起こす可能性が最も高いことがわかりました。

({ :key => value })を使用すると、明示的にハッシュがメソッドに渡されます。括弧はメソッドの引数を明示的に定義し、角括弧はハッシュを定義するための標準的な表記法です(Ruby引数のハッシュ値を自動検出するマジック)。

決定的な最善/正しい方法はないと思いますが、Rubyスタイルガイドは最初のバージョンを好むようです。

8
Tejay Cardon