Назад | Перейти на главную страницу

Как получить доступ к переменной в марионетке

Я написал модуль и определил переменную с именем «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.