O agente fantoche não consegue encontrar o módulo de teste

O agente fantoche não consegue encontrar o módulo de teste

Estou montando um mestre e agente de marionetes. Eles estão rodando no mesmo host, pois quero que o fantoche gerencie esse host também. O agente não consegue encontrar o módulo de teste conveniente fornecido pelo pacote.

Estou executando o Ubuntu Trusty (14.04 LTS) e instalei os pacotes puppetmaster-passenger e puppet para começar. Tudo bem até agora.

root@mangosteen:/etc/puppet# dpkg -l | grep puppet
ii  puppet                           3.4.3-1ubuntu1.1    [...]
ii  puppet-common                    3.4.3-1ubuntu1.1    [...]
ii  puppetmaster                     3.4.3-1ubuntu1.1    [...]
ii  puppetmaster-common              3.4.3-1ubuntu1.1    [...]
ii  puppetmaster-passenger           3.4.3-1ubuntu1.1    [...]
root@mangosteen:/etc/puppet# 

Meu /etc/puppet/puppet.confparece bastante comum:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN 
ssl_client_verify_header = SSL_CLIENT_VERIFY

dns_alt_names = mangosteen.example.com,puppetmaster.example.com

O pacote fornece um teste rápido, o que eu acho que deveria significar que trazer um agente resultará na gravação de HelloWorld em /tmp/hello:

root@mangosteen:/etc/puppet# pwd
/etc/puppet
root@mangosteen:/etc/puppet# find manifests/ -type f
manifests/site.pp
root@mangosteen:/etc/puppet# find modules/ -type f
modules/test/manifests/init.pp
root@mangosteen:/etc/puppet# cat manifests/site.pp
include test
root@mangosteen:/etc/puppet# cat modules/test/manifests/init.pp
class test { file { \/tmp/hello\: content => \HelloWorld\ } }
root@mangosteen:/etc/puppet# 

Mas não é isso que acontece. (Lembre-se de que o agente e o mestre estão no mesmo host, chamado mangosteen.example.com com o alias puppetmaster.example.com)

root@mangosteen:/etc/puppet# puppet agent --test
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class test for mangosteen.example.com on node mangosteen.example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
root@mangosteen:/etc/puppet# 

O log do servidor ( /var/log/puppet/masterhttp.log) é bastante comum por meio dessa operação:

[2015-10-02 12:54:08] 139.162.x.y - - [02/Oct/2015:12:54:08 UTC] "GET /production/node/mangosteen.example.com? HTTP/1.1" 200 4487
[2015-10-02 12:54:08] - -> /production/node/mangosteen.example.com?
[2015-10-02 12:54:08] 139.162.x.y - - [02/Oct/2015:12:54:08 UTC] "GET /production/file_metadatas/plugins?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1" 200 278
[2015-10-02 12:54:08] - -> /production/file_metadatas/plugins?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5
[2015-10-02 12:54:09] 139.162.x.y - - [02/Oct/2015:12:54:09 UTC] "POST /production/catalog/mangosteen.example.com HTTP/1.1" 400 89
[2015-10-02 12:54:09] - -> /production/catalog/mangosteen.example.com
[2015-10-02 12:54:09] 139.162.x.y - - [02/Oct/2015:12:54:09 UTC] "PUT /production/report/mangosteen.example.com HTTP/1.1" 200 9
[2015-10-02 12:54:09] - -> /production/report/mangosteen.example.com

E a saída de depuração do agente não é interessante para mim, principalmente sobre como encontrar seus certificados. Esses comandos fornecem um resumo razoável desse tédio:

root@mangosteen:/etc/puppet# puppet agent --test --debug --trace 2>&1 | grep -i module
root@mangosteen:/etc/puppet# puppet agent --test --debug --trace 2>&1 | grep -i test
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class test for mangosteen.example.com on node mangosteen.example.com
root@mangosteen:/etc/puppet# 

Alguma indicação sobre o que estou fazendo de errado?

Responder1

Se você estiver usando o agente puppet no mesmo host onde está o puppet master, você pode usar o puppet apply conforme @FelixFranksugerido

Enfim, o problema é que você não tem o nó definido "mangosteen.example.com", você também pode resolver esse problema definindo o default node, o Puppet procura o nó que define e se nada for encontrado usa odefault node.

Responder2

@FelixFrank forneceu a pista principal para a resposta: o arquivo modules/test/manifests/init.ppcontinha um erro de digitação. Estranhamente, isso não foi relatado no log pelo mestre das marionetes, e o agente das marionetes apenas disse que a classe de teste não pôde ser encontrada. (Não foi possível encontrá-lo porque não foi analisado, pelo que posso dizer.)

Sou novo o suficiente no fantoche e posso ter estragado o registro de alguma forma. De qualquer forma, como não havia nenhuma diretiva de nó, a ausência de uma diretiva de nó para este host não estava em questão. Na verdade, acabou sendo um teste bastante inteligente, porque assim que o agente funcionou (depois que corrigi o erro de digitação), o agente criou um arquivo em /tmp/hello.

informação relacionada