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.