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 以获取文档和好的示例。
用必须首先计算的值填充模板的最佳方法是什么(使用 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 以获取文档和好的示例。