我编写了一个模块,并在以下位置定义了一个名为“master”的变量:/etc/puppet/network/manifests/vlan/vlan.pp。在 vlan.pp 中,我调用了一个模板文件:file { “ifcfg-${interface}”:content => template('net/vlan.erb'), } 但是我无法访问文件位置中的变量“master”:
/etc/puppet/modules/net/templates/vlan.erb
当 Puppet 在客户端运行时,它不会被打印。我的理解是这是一个范围问题,但我不知道范围调用应该是什么,有人能帮我解决这个问题吗?
我已经在 erb 文件中尝试了以下调用: <%= scope.lookupvar('network::vlan::master') %> <%= scope.lookupvar('network::vlan::vlan::master') %> <%= master %>
谢谢丹
答案1
我会将您的模板更改为如下内容:
<%= @master %>
还要确保您的 vlan.pp 中有类似这样的内容:
$master = "value"
模板将具有在模板生成范围内可访问的任何变量。确保变量在模板中可访问的一种简单方法是将本地范围之外的任何变量转换为实例变量,如下所示:
$var = $somemodule::var
然后使用@var 访问模板中的 var。