Chef - 计算模板文件的值

Chef - calculate values for a template file

用必须首先计算的值填充模板的最佳方法是什么(使用 Chef)?计算包括例如:为服务 ID 调用数据库或从 TPN 获取硬件 ID。有一些模板文件需要这些值。

我的方法是创建一个库文件 (NameConfiguration.rb),为模板文件 (mytest.conf.erb) 生成所有需要的值。如何在模板文件中访问这些变量?

[default.rb - 食谱]

template '/etc/mytest.conf' do
   source 'mytest.conf.erb'
   mode '0644'
   variables ({ :NAME => '???' })
end 

[模板:mytest.conf.erb]

 My test Text <%= @NAME %> 

[NameConfiguration.rb]

 # complex name calculation (just a simple example) 
 class NameGen
    firstName = "Heinz"
    LastName = "Winter"
    def create
      sprintf("%s--%s test", firstName, LastName)
    end
 end     

确保库文件 NameConfiguration.rb 位于食谱的 /libraries 目录中。然后您可以将库用作 template helper modules

A template helper module can be defined in a library. This is useful when extensions need to be reused across recipes or to make it easier to manage code that would otherwise be defined inline on a per-recipe basis.

template '/path/to/template.erb' do
  helpers(MyHelperModule)
end

我强烈建议您访问上面的 link 以获取文档和好的示例。