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 마스터가 있는 동일한 호스트에서 Puppet 에이전트를 사용하는 경우 @FelixFrank제안된 대로 puppet 적용을 사용할 수 있습니다.

어쨌든 문제는 을 정의한 노드가 없다는 것입니다 "mangosteen.example.com". 을 정의하여 이 문제를 해결할 수도 있습니다 default node. Puppet은 정의하는 노드를 찾고 아무것도 발견되지 않으면default node.

답변2

@FelixFrank는 파일에 modules/test/manifests/init.pp오타가 있다는 답변에 대한 주요 단서를 제공했습니다. 이상하게도 이는 Puppet Master의 로그에 보고되지 않았고 Puppet Agent는 단지 테스트 클래스를 찾을 수 없다고만 말했습니다. (내가 알 수 있듯이 구문 분석을 하지 않았기 때문에 찾을 수 없습니다.)

나는 어떻게 든 로깅을 실패했을 수도 있다는 꼭두각시를 할만큼 충분히 새로운 것입니다. 어쨌든 노드 지시문이 전혀 없었기 때문에 이 호스트에 대한 노드 지시문이 없는 것은 문제가 되지 않았습니다. 실제로 에이전트가 작동하면(오타를 수정한 후) 에이전트가 /tmp/hello.

관련 정보