Я написал модуль и определил переменную с именем «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
Когда марионетка запускается на клиенте, она не печатается. Насколько я понимаю, это проблема области видимости, но я застрял в том, каким должен быть вызов области действия, может ли кто-нибудь помочь мне с этим?
Я пробовал следующие вызовы уже в файле erb: <% = scope.lookupvar ('network :: vlan :: master')%> <% = scope.lookupvar ('network :: vlan :: vlan :: master ')%> <% = мастер%>
Спасибо Дэн
Я бы изменил ваш шаблон, чтобы он был примерно таким:
<%= @master %>
Также убедитесь, что в вашем vlan.pp есть что-то в этом роде:
$master = "value"
В шаблоне будут все переменные, доступные в той области, где он был создан. Простой способ убедиться, что переменная доступна в шаблоне, - это превратить любые переменные из-за пределов локальной области в переменную экземпляра примерно так:
$var = $somemodule::var
Затем вы получаете доступ к переменной в вашем шаблоне с помощью @var.