web-dev-qa-db-ja.com

Puppetテンプレートとundefined / nil変数

Puppetテンプレートにデフォルト値を含めたいことがよくあります。私はそれがこのようなクラスを与えられることを望んでいました:

class myclass ($a_variable=undef) {
  file { '/tmp/myfile':
    content => template('myclass/myfile.erb'),
  }
}

私はこのようなテンプレートを作ることができます:

a_variable = <%= a_variable || "a default value" %>

残念ながら、PuppetのundefはテンプレートのコンテキストではRuby nil値に変換されないため、これは実際には機能しません。 Puppetテンプレートのデフォルト値を処理する標準的な方法は?

デフォルト値を空の文字列に設定してから、empty?テストを使用できます。

a variable = <%= a_variable.empty? ? "a default value" : a_variable %>

...しかし、それは少し不格好なようです。

3
larsks

クラス定義にデフォルトを設定するだけではいけませんか?

class myclass ($a_variable = "a default value") {
2
Shane Madden