Função própria marionete

2

Estou tentando fazer minha própria função. Eu continuo recebendo esta mensagem.

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Function 'brent_k' does not return a value at /etc/puppet/modules/munin/manifests/init.pp:17 on node XYZ.com

Aqui está o meu código simples

xyz.com:/etc/puppet/modules/munin/lib/puppet/parser/functions# cat brent_k.rb
  module Puppet::Parser::Functions
    newfunction(:brent_k, :type => :rvalue) do |args|
      val = 'ok'
      val
    end
  end

E depois, no meu manifesto, tenho

$a = brent_k()

Eu também tentei return val . Como posso consertar isso?

    
por Brent 18.10.2012 / 14:08

2 respostas

3

Quando você altera qualquer código ruby personalizado, como uma função personalizada, é necessário reiniciar o Puppetmaster. Se você está executando o fantoche sob o passageiro, isso significa reiniciar o Apache. Caso contrário, você obterá a versão antiga.

Além disso, há um bug bastante desagradável que entra em ação se você estiver hospedando vários ambientes em seu puppetmaster com uma função com nome idêntico no outro ambiente. Neste caso, você não tem como ter certeza de qual função do ambiente é usada quando você chama o nome da função! Ele usa o mesmo namespace de função em todos os ambientes ... (isso é confirmado para acontecer no Puppet 2.7.22, não tenho certeza sobre 3.x)

    
por 08.08.2013 / 06:34
0

Como a documentação diz:

The puppet master caches custom functions. If you edit an existing function (e.g. while you’re developing it), you’ll need to restart the puppet master before the new version can be used.

link

Nota sobre reiniciar o mestre de marionetes:

Se você executar o seguinte comando para reiniciar o Puppet Master:

$ service puppetmaster restart
Restarting puppet master
puppetmaster not configured to start, please edit /etc/default/puppetmaster to enable 
.

Você notará que o serviço para, mas não inicia.

Nesse caso, como Steve Shipway mencionou, você provavelmente está executando o Puppet master em Passenger e precisa recarregar o apache2 para realmente reiniciar o Puppet master:

$ service apache2 reload
    
por 18.09.2015 / 11:15

Tags