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

2

Plano de fundo

Eu gostaria de aplicar essa ideia de ter uma classe common que inclua todas as informações específicas sobre minha configuração.

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

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

e instalado este módulo ntp e criamos um nó como esse

node testip {
  include myconfig::ntpp
}

Problema

/etc/puppet/modules/myconfig/manifests/init.pp contém

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

e eu esperaria que $ntpServerList estivesse disponível, mas não é. 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 está errado na minha myconfig::ntpp classe?

    
por Sandra 24.08.2012 / 23:02

1 resposta

4

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

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

Veja aqui para mais detalhes.

    
por 25.08.2012 / 01:05