Puppet 代理程式無法找到測試模組

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# 

關於我做錯了什麼的任何指示嗎?

答案1

如果您在擁有 Puppet Master 的相同主機中使用 Puppet Agent,則可以按照@FelixFrank建議 使用 Puppet apply

不管怎樣,問題是,你沒有定義 的節點"mangosteen.example.com",你也可以定義 來解決這個問題default node,Puppet 尋找定義的節點,如果沒有找到,則使用default node.

答案2

@FelixFrank 提供了答案的主要線索,即該文件modules/test/manifests/init.pp有一個拼寫錯誤。奇怪的是,傀儡大師沒有在日誌中報告這一點,傀儡代理人只是說找不到測試類別。 (據我所知,它無法找到,因為它沒有解析。)

我還很新,可以木偶,我可能以某種方式搞砸了日誌記錄。無論如何,因為根本沒有節點指令,所以該主機缺少節點指令並不是問題。事實上,事實證明這是一個相當聰明的測試,因為一旦代理工作(一旦我修復了拼寫錯誤),代理就會在/tmp/hello.

相關內容