Почему переменная недоступна?

Почему переменная недоступна?

Фон

я бы хотел применитьэтотидея создать commonкласс, который включал бы всю конкретную информацию о моей установке.

Итак, я создал /etc/puppet/modules/common/manifests/init.ppс помощью

class common { include common::data }
class common::data { $ntpServerList = [ 'ntp51.ex.com','ntp3.ex.com' ] }

и установленэтотмодуль ntp и создали такой узел

node testip {
  include myconfig::ntpp
}

Проблема

/etc/puppet/modules/myconfig/manifests/init.ppсодержит

class myconfig::ntpp {
  include common
  class {'ntp':
      server_list => $ntpServerList
#          server_list => ['ntp.ex.com']    # this works
  }
}

и я бы ожидал, что это $ntpServerListбудет доступно, но это не так. Ошибка в том,

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template ntp/ntp.conf.erb:
  Filepath: /usr/lib/ruby/site_ruby/1.8/puppet/parser/templatewrapper.rb
  Line: 64
  Detail: Could not find value for 'server_list' at /etc/puppet/modules/ntp/templates/ntp.conf.erb:25
 at /etc/puppet/modules/ntp/manifests/init.pp:183 on node testip

Вопрос

Может ли кто-нибудь понять, что не так с моим myconfig::ntppклассом?

решение1

Вам необходимо полностью квалифицировать ваши переменные; $common::data::ntpServerList.

На самом деле ваш код ищет переменную, вызванную ntpServerListв локальной области видимости ( $myconfig::ntpp::ntpServerList), которая не существует, поэтому он возвращается к верхней области видимости ( $::ntpServerList), где ее также не существует.

ВидетьздесьБольше подробностей.

Связанный контент