Estoy creando un titiritero y un agente. Se ejecutan en el mismo host, ya que quiero que Puppet también administre este host. El agente no encuentra el módulo de prueba conveniente que proporciona el paquete.
Estoy ejecutando Ubuntu Trusty (14.04 LTS) e instalé los paquetes Puppetmaster-Passenger y Puppet para comenzar. Todo bien hasta ahora.
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#
Mi /etc/puppet/puppet.conf
parece bastante normal:
[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
El paquete proporciona una prueba rápida, lo que creo que debería significar que al abrir un agente se escribirá HelloWorld en /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#
Pero esto no es lo que sucede. (Recuerde que el agente y el maestro están en el mismo host, que se llama mangosteen.example.com con 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#
El registro del servidor ( /var/log/puppet/masterhttp.log
) es bastante normal mediante esa operación:
[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
Y la salida de depuración del agente no me parece interesante, principalmente en lo que respecta a encontrar sus certificados. Estos comandos proporcionan un resumen razonable de ese aburrimiento:
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#
¿Algún consejo sobre lo que estoy haciendo mal?
Respuesta1
Si está utilizando el agente de títeres en el mismo host donde tiene el titiritero, puede usar la aplicación de títeres como @FelixFrank
se sugiere.
De todos modos, el problema es que no tienes el nodo definido "mangosteen.example.com"
, también puedes resolver este problema definiendo el default node
, Puppet busca el nodo que define y si no encuentra nada usa eldefault node.
Respuesta2
@FelixFrank proporcionó la pista principal de la respuesta: que el archivo modules/test/manifests/init.pp
tenía un error tipográfico. Curiosamente, el titiritero no informó esto en el registro, y el agente títere simplemente dijo que no se pudo encontrar la clase de prueba. (No se pudo encontrar porque no se analizó, por lo que puedo decir).
Soy lo suficientemente nuevo en el mundo de las marionetas como para haber cometido un error al iniciar sesión de alguna manera. En cualquier caso, como no había ninguna directiva de nodo, la ausencia de una directiva de nodo para este host no estaba en cuestión. De hecho, resultó ser una prueba bastante inteligente, porque una vez que el agente funcionó (una vez que solucioné el error tipográfico), el agente creó un archivo en /tmp/hello
.