如何在 Puppet 中的 erb-subtemplate 中访问变量?

如何在 Puppet 中的 erb-subtemplate 中访问变量?

例子.pp

$foo = 'bar'
$content = template('mymodule/maintemplate.erb')

主模板.erb

<% bar = foo + "extra" %>

foobar = scope_function_template(['mymodule/subtemplate.erb'])

子模板.erb

<%# here i want to access the variable bar %>
<%= bar %>

有函数

<%= scope.lookupvar('::bar') %>

是否存在某种类型的parent::barerb 模板,或者我可以将一些变量传递给子模板,或者我只能使用 .pp 文件访问外部变量::foo

答案1

正如该错误报告/功能请求中所述:http://projects.puppetlabs.com/issues/6492有一个解决方法scope.setvar

<% bar = foo + "extra" %>
scope.unsetvar('bar')
scope.setvar('bar',bar)

这很丑但是似乎有效......

答案2

所以我读http://projects.puppetlabs.com/issues/6592#note-6可以使用 TemplateWrapper 并最终得到以下代码片段:

<%
newscope = scope.compiler.newscope(scope)
newscope.setvar(k, v)
wrapper = Puppet::Parser::TemplateWrapper.new(newscope)
wrapper.file = 'templatefile.erb'
%>
<%= wrapper.result %>

相关内容