Por que a variável não está disponível?

Por que a variável não está disponível?

Fundo

eu gostaria de aplicaresseideia de ter uma commonaula que inclua todas as informações específicas sobre minha configuração.

Então eu criei /etc/puppet/modules/common/manifests/init.ppcom

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

e instaladoessemódulo ntp e criei um nó como este

node testip {
  include myconfig::ntpp
}

Problema

/etc/puppet/modules/myconfig/manifests/init.ppcontém

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

e eu esperava que isso $ntpServerListestivesse disponível, mas não está. O erro é

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

Pergunta

Alguém pode descobrir o que há de errado com minha myconfig::ntppclasse?

Responder1

Você precisa qualificar totalmente suas variáveis; $common::data::ntpServerList.

Do jeito que está, seu código está procurando uma variável chamada ntpServerListno escopo local ( $myconfig::ntpp::ntpServerList) que não existe, então ele volta para o escopo superior ( $::ntpServerList) onde também não existe.

Veraquipara mais detalhes.

informação relacionada