Итак, я уже некоторое время играю с марионеткой, и мне удалось настроить файл site.pp и работать так, как я хочу, когда я запускаю марионетку против него вручную, и я начинаю двигаться дальше для выяснения проблем клиент / сервер.
Я запускаю небольшую виртуальную машину на своем устройстве для разработки, которая пытается синхронизироваться с puppetmasterd на моем основном компьютере, но возникают проблемы.
Во-первых, синхронизация плагинов и фактов, похоже, вообще не работает - я попытался открыть больше auth.conf, но чувствую, что приближаюсь к опасной близости к тому, чтобы раскрыть свои конфигурации всему миру. Фактов для узла просто не существует.
Я попытался посмотреть официальную документацию о том, как это правильно настроить, но мне кажется, что большая часть ее написана до версии 0.25.0. У кого-нибудь есть идеи для отладки источника этой конкретной проблемы?
Вот ошибки, которые я вижу в журнале ошибок:
Sep 16 22:12:59 support puppetmasterd[2800]: Not authorized to call search on /file_metadata/facts with {:ignore=>[".svn", "CVS"], :links=>"manage", :recurse=>true}
Sep 16 22:12:59 support puppetmasterd[2800]: Not authorized to call find on /file_metadata/facts
Sep 16 22:13:00 support puppetmasterd[2800]: Host is missing hostname and/or domain: **hostname of my virtual host's NAT gateway**
Sep 16 22:24:43 test puppetd[3841]: Retrieving plugin
Sep 16 22:24:43 test puppetd[3841]: Format s not supported for Puppet::FileServing::Metadata; has not implemented method 'from_s'
Sep 16 22:24:43 test puppetd[3841]: Puppet::Network::Format[json]: false value when expecting true
Sep 16 22:24:43 test puppetd[3841]: Finishing transaction -609701378 with 0 changes
Sep 16 22:24:43 test puppetd[3841]: Fact syncing is deprecated as of 0.25 -- use 'pluginsync' instead
Sep 16 22:24:43 test puppetd[3841]: Retrieving fact
Sep 16 22:24:43 test puppetd[3841]: Format s not supported for Puppet::FileServing::Metadata; has not implemented method 'from_s'
Sep 16 22:24:43 test puppetd[3841]: Puppet::Network::Format[json]: false value when expecting true
Sep 16 22:24:43 test puppetd[3841]: (/File[/var/lib/puppet/facts]) Failed to generate additional resources using 'eval_generate': Error 400 on SERVER: Not authorized to call search on /file_metadata/facts with {:ignore=>[".svn", "CVS"], :links=>"manage", :recurse=>true}
Sep 16 22:24:43 test puppetd[3841]: Format s not supported for Puppet::FileServing::Metadata; has not implemented method 'from_s'
Sep 16 22:24:43 test puppetd[3841]: Puppet::Network::Format[json]: false value when expecting true
Sep 16 22:24:44 test puppetd[3841]: (/File[/var/lib/puppet/facts]) Failed to retrieve current state of resource: Error 400 on SERVER: Not authorized to call find on /file_metadata/facts Could not retrieve file metadata for puppet://..fqdn../facts: Error 400 on SERVER: Not authorized to call find on /file_metadata/facts
Sep 16 22:24:44 test puppetd[3841]: Finishing transaction -610061128 with 0 changes
Sep 16 22:24:45 test puppetd[3841]: Format s not supported for Puppet::Resource::Catalog; has not implemented method 'from_s'
Sep 16 22:24:45 test puppetd[3841]: Puppet::Network::Format[json]: false value when expecting true
puppet.conf на клиенте
[main]
server=**fqdn of puppetmasterd**
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=true
node_name=cert
certname=**fqdn of client**
puppet.conf на сервере
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=true
[puppetmasterd]
templatedir=/var/lib/puppet/templates
storeconfigs = true
dbadapter = mysql
dbuser = puppet
dbpassword = **password**
dbserver = localhost
dbsocket = /var/run/mysqld/mysqld.sock
fileserver.conf на сервере
[files]
path /etc/puppet/files
allow *
[modules]
allow *
[plugins]
allow *
auth.conf на сервере
path ~ ^/catalog/([^/]+)$
method find
allow *
path /certificate_revocation_list/ca
method find
allow *
path /report
method save
allow *
path /file_metadata
auth any
allow *
path /file
allow *
path /certificate/ca
auth no
method find
allow *
path /certificate/
auth no
method find
allow *
path /certificate_request
auth no
method find, save
allow *
path /
auth yes
allow *
Во-первых, избавьтесь от factsync
, fact_sync
, и plugin_sync
- все они либо не требуются, либо написаны с ошибками. Во-вторых, auth.conf
не требуется - мои настройки 0.25 не имеют auth.conf
где бы то ни было. Я действительно думаю, что вы это слишком усложняете. Если вы исправите проблемы с именем хоста / сертификата (в соответствии с вашим другим вопросом) и используете fileserver.conf
у вас там все должно получиться.
Одна вещь, которая может вас сбить с толку, заключается в том, что файловый сервер выдает 400 секунд за попытки доступа к модулям файлового сервера, которые не существуют (например, /facts
в сообщениях журнала), а не 404, которые меня сначала поймали. Отключение функции factync, как я предлагал выше (и, поскольку она устарела и является действительно плохой идеей, не повредит), все равно избавится от этих ошибок.