¿Por qué no está disponible la variable?

¿Por qué no está disponible la variable?

Fondo

Me gustaria optaresteidea de tener una commonclase que incluya toda la información específica sobre mi configuración.

Así que he creado /etc/puppet/modules/common/manifests/init.ppcon

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

e instaladoestemódulo ntp y he creado un nodo como este

node testip {
  include myconfig::ntpp
}

Problema

/etc/puppet/modules/myconfig/manifests/init.ppcontiene

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

Y hubiera esperado que $ntpServerListestuviera disponible, pero no lo está. El error es

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

Pregunta

¿Alguien puede descubrir qué le pasa a mi myconfig::ntppclase?

Respuesta1

Necesita calificar completamente sus variables; $common::data::ntpServerList.

Tal como están las cosas, su código busca una variable llamada ntpServerListen el ámbito local ( $myconfig::ntpp::ntpServerList) que no existe, por lo que vuelve al ámbito superior ( $::ntpServerList) donde tampoco existe.

Veraquípara más detalles.

información relacionada