Кукольный агент не может найти тестовый модуль

Я настраиваю кукловода и агента. Они работают на одном хосте, так как я хочу, чтобы puppet тоже управлял этим хостом. Агент не может найти удобный тестовый модуль, который предоставляет пакет.

Я использую Ubuntu Trusty (14.04 LTS) и установил пакеты puppetmaster-passenger и puppet, чтобы начать работу. Пока все хорошо.

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# 

мой /etc/puppet/puppet.conf кажется довольно обыденным

[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

Пакет обеспечивает быстрый тест, который, я думаю, должен означать, что при запуске агента HelloWorld записывается в / 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# 

Но это не то, что происходит. (Напомним, что агент и мастер находятся на одном хосте, который называется mangosteen.example.com с псевдонимом 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# 

Лог сервера (/var/log/puppet/masterhttp.log) довольно обычная операция:

[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

И отладочный вывод агента неинтересен для меня, в основном это касается поиска его сертификатов. Эти команды обеспечивают разумное резюме этой скуки:

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# 

Есть указания на то, что я делаю не так?

2 ответа

@FelixFrank предоставил основной ключ к ответу, что файл modules/test/manifests/init.pp была опечатка. Как ни странно, хозяин марионеток не сообщил об этом в журнале, и агент марионеток просто сказал, что тестовый класс не может быть найден. (Его не удалось найти, потому что он не анализировался, насколько я могу судить.)

Я достаточно новичок в марионетке, что, возможно, я как-то испортил регистрацию. В любом случае, поскольку директивы узла не было вообще, отсутствие директивы узла для этого хоста не было проблемой. Действительно, это оказалось довольно умным тестом, потому что, как только агент работал (как только я исправил опечатку), агент создал файл в /tmp/hello,

Если вы используете Puppet Agent на том же хосте, где у вас есть Puppet Master, вы можете использовать Puppet apply как @FelixFrank предложенный

В любом случае, проблема в том, что вы не определили узел "mangosteen.example.com"Вы также можете решить эту проблему, определив default node, Puppet ищет определяющий узел и, если ничего не найдено, использует default node.

Другие вопросы по тегам