Erro de fantoche ao testar o manifesto

2

Prefixo: eu procurei isso, mas o fato de haver várias coisas que podem causar esse problema, não consegui encontrar uma solução para esse caso específico.

Eu tenho um mestre de marionetes (3.0.2-1; RHEL6) e o arquivo /etc/puppet/manifests/site.pp contém o seguinte:

import 'nodes/nodes.pp'
$puppetserver = 'puppet.example.dom'

Naturalmente, o domínio do servidor não é o que está em uso, mas foi alterado para proteger os inocentes.

O arquivo nodes / nodes.pp contém:

node 'agent1.example.dom' {
    include users,
}

A classe de usuários está em / etc / puppet / modules / users. O arquivo manifests / init.pp contém:

class users {
    group { 'admins':
        ensure => 'present',
        gid    => '501',
    }
    user { 'user1':
        ensure           => 'present',
        uid              => '10000',
        gid              => '501',
        home             => '/home/user1',
        password_max_age => '60',
        password_min_age => '1',
        shell            => '/bin/bash',
    }
}

Se eu remover a linha "include users", do arquivo nodes.pp, o catálogo é aplicado:

Info: Retrieving plugin
Info: Caching catalog for agent1.example.dom
Info: Applying configuration version '1357858753'
Notice: Finished catalog run in 0.02 seconds

No entanto, quando o incluo, aparece o seguinte erro:

[root@agent1 ~]# puppet agent --test --noop
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not 
parse for environment production: Syntax error at '}' at 
/etc/puppet/manifests/nodes/nodes.pp:3 on node agent1.example.dom
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Isso me faz pensar que tenho um erro de sintaxe no arquivo init.pp, mas não consigo descobrir o que seria. Talvez eu não tenha configurado isso corretamente ou estou vinculando as várias partes incorretamente?

Eu tentei sem a vírgula no arquivo nodes.pp, bem como com. Eu também tentei sem uma vírgula na última linha do arquivo init.pp usuários, bem como com. Eu tentei com uma linha vazia entre a definição do grupo e a definição do usuário. Eu recebo o mesmo resultado, independentemente de qualquer pequena alteração que eu faça.

Eu também tentei colocar a definição do nó diretamente no arquivo site.pp, mas o mesmo erro ocorre. Apenas de um local diferente do que anteriormente (site.pp vs nodes / nodes.pp).

A conectividade com o servidor foi verificada usando o telnet do agente 1 para a porta 8140 no mestre de marionetes.

Alguma ideia? O agente também é v3.0.2-1, mas é RHEL5. Eu não testei um agente RHEL6 ainda.

EDITAR: Eu corri o teste com a opção --debug. A saída está aqui: link

EDIT 2: Eu não declarei a classe / módulo antes de tentar isso. Eu fiz isso com puppet apply /etc/puppet/modules/users/manifests/users.pp (depois de alterar o nome do arquivo). Isso agora me dá o seguinte erro:

[root@agent1 puppet]# puppet agent --test --noop
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not 
find class users for agent1 on node agent1
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Então, algo mudou. O erro de sintaxe desapareceu, mas a classe não pode ser encontrada.

    
por theillien 11.01.2013 / 00:05

3 respostas

1

Eu postei no link como sugerido pelo Sirex no chat. Foi apontado que eu havia renomeado o manifesto do módulo de arquivo para users.pp, mas deveria ter sido init.pp de acordo com o carregamento automático de classes e subclasses que é construído no Puppet.

    
por 15.01.2013 / 01:20
0

remova o , após include users - isso é apenas um que eu posso ver a olho nu.

você deve poder ir com ensure => present também

experimente o analisador de fantoches validar .pp

experimente o fantoche-lint

    
por 11.01.2013 / 00:25
0

Primeiro, você precisa renomear a classe de volta para o init.pp ou o Puppet não conseguirá encontrá-la.

Segundo, aplicar a marionete com o arquivo onde a classe está definida não nada . Se você quer usar puppet apply para testar suas classes, você pode colocar isso em tests / init.pp

include users

Depois, você pode testar a turma com:

puppet apply modules/users/tests/init.pp

Terceiro, O, por trás da instrução include (nodes.pp) precisa ser executado.

Atenciosamente, Ger.

    
por 11.01.2013 / 07:38

Tags