我已经将我的木偶(v3.6.2)服务器(RHEL 7.1)重新configuration到支持的环境中,如下所示。
/etc/puppet puppet.conf auth.conf environments Project_A modules manifests/site.pp environment.conf Project_B modules manifests/site.pp environment.conf
environment.conf文件由…组成
modulepath=/etc/puppet/environments/$environment/modules manifest=/etc/puppet/environments/$environment/manifests/site.pp
每个环境的site.pp文件由
include 'nodes.pp' include 'selinux.pp' include 'check_mode.pp' $puppetserver=<SERVER> Package { allow_virtual=>true, }
在我运行命令时在代理上
puppet agent --no-daemonize --trace --debug --noop --verbose
我得到错误
错误:无法从远程服务器检索目录:服务器上的错误400:无法find<SERVER上> <SERVER>的类节点
在/var/log/puppet/masterhttp.log我得到的错误
[2015-09-09 15:43:12] <'IP'> – – [2015/09/09:15:43:12 AEST]“POST / Project_A / catalog / <'SERVER'> HTTP / 1.1 400 21
每个代理具有与puppet具有单个环境时相同的configuration,并添加“environment ='PROJECT_A'
如果我将site.pp中的nodes.pp从include更改为导入导入“nodes.pp”,则错误将更改为
错误:无法从远程服务器检索目录:服务器上出现错误400:在<'SERVER'>上找不到<SERVER>类的selinux.pp
当木偶被configuration为单个环境时,相同的结构正确工作。 在单一的环境下,所有的configuration都是这样的:
/etc/puppet puppet.conf auth.conf environments modules manifests/site.pp
我怀疑我可能需要修改我的auth.conf文件,但是不知道需要什么修改。 目前该文件是默认configuration。
我曾尝试添加
path /environments allow *
没有喜乐
并添加到fileserver.conf
path /etc/puppet/environments allow *
再次没有喜乐。
用于loggingmaster puppet.conf文件
[main] logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl always_cache_features = true server = <'PUPPET SERVER'> environmentpath = $confdir/environments [master] ca = true dns_alt_names = <'SAN DNS ENTRIES'> certname = <'PUPPET MASTER'> ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY environment = master [agent] classfile = $vardir/classes.txt localconfig = $vardir/localconfig environment = Project_A
代理使用相同的configuration文件,而不使用[master]
任何人都可以看到我在configuration中犯了一个错误。
更新:我已经启动puppetmaster在debugging模式,并从代理试图连接到服务器。 在debugging输出中,这让我怀疑它是auth.conf
Notice: Starting Pppet master version 3.6.2 Debug: Routes Registered Debug: Route /^\/v2\.0/ Debug: Route /.*/ Debug: Evaluating match for Route /^\/v2\.0/ Debug: Did not match path ("/Project_A/node/<SERVER A>") Debug: Evaluating match for Route /.*/ Info: access[^/catalog/([^/]+)$]: allowing 'method' find Info: access[^/catalog/([^/]+)$]: allowing $1 access Info: access[^/node/([^/]+)$]: allowing 'method' find Info: access[^/node/([^/]+)$]: allowing $1 access Info: access[/certificate_revocation_list/ca]: allowing 'method' find Info: access[/certificate_revocation_list/ca]: allowing * access Info: access[/^/report/([^/]+)$]: allowing 'method' save Info: access[/^/report/([^/]+)$]: allowing $1 access Info: access[/file]: allowing * access Info: access[/certificate/ca]: adding authentication any Info: access[/certificate/ca]: adding 'method' find Info: access[/certificate/ca]: adding * access Info: access[/certificate/]: adding authentication any Info: access[/certificate/]: adding 'method' find Info: access[/certificate/]: adding * access Info: access[/certificate_request]: adding authentication any Info: access[/certificate_request]: adding 'method' find Info: access[/certificate_request]: adding 'method' save Info: access[/certificate_request]: adding * access Info: access[/v2.0/environments]: adding 'method' find Info: access[/v2.0/environments]: adding * access Info: access[/]: adding authentication any Info: Inserting dfault '/status' (auth true) ACL Info: Caching node for <SERVER A> Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format [msgpack]: feature msgpack is missing Debug: node supports formats: pson b64_zlib_yaml yaml raw Debug: Routes Register: Debug: Routes /^\/v2\.0/ Debug: Route /.*/ Debug: Evaluating match for Route /^\/v2\.0/ Debug: Did not match path ("/Project_A/file_metadatas/plugins") Debug: Evaluating match for Route /.*/
更新:
我有这样的工作。
在重新阅读有关环境的puppetlabs文档后,它指出必须有一个称为生产的环境。 我已经这样创造了
/etc/puppet/environments/production | modules | manifests | environment.conf
这与其他环境configuration相同,尽pipe目录中目前没有文件。
代理保持不变。
现在,当我运行代理程序,它运行没有错误。 唯一的一点就是从puppet root / etc / puppet / modules&/ etc / puppet / manifests收集信息,如果主机没有在/ etc / puppet / manifest中定义,代理运行不起作用/site.pp。
在puppetmasterdebugging输出中,对主机的所有引用都定义为Project_A,并且有日志条目
注意:在0.00秒内编译环境Project_A中的<'SERVER_A'>的目录
从代理
Notice: /Stage/[main]/ntp::Config/File[/etc/ntp.conf]/content: content changed '{md5}<md5sum>' to '{md5}<md5sum>' Info: /Stage/[main]/ntp::Config/File[/etc/ntp.conf]: Scheduling refresh of Service{ntpd}
所以总结。
客户端被认定为属于主服务器上的环境“Project_A”。 尽pipe被configuration为在“Project_A”environment.conf文件中使用path/etc/puppet/environments/$environment/{modules|manifests/site.pp}。
实际上是使用/etc/puppet/{modules|manifests/site.pp}
你有没有检查你的目录权限。 Web服务器可能无法访问目录。
感谢所有回答的人。
这已经解决了。
实施环境时适用以下情况
我一直在观察当caching被移除时消失的怪异行为。