PuppetServer 5.3.1 auth.conf权限错误:无file_metadata/files调用权限
我来帮你解决这个PuppetServer的权限问题——我之前也碰到过类似的情况,核心是PuppetServer的访问控制策略限制了Agent获取文件元数据的权限,导致推送mysql驱动jar包时失败。先把你遇到的错误信息贴出来方便对照:
错误:/Stage[main]/Wso2base::Configure/Wso2base::Push_files[lib/mysql-connector-java-5.1.46.jar]/File[/mnt/wso2ei-6.1.1/lib/mysql-connector-java-5.1.46.jar]: 无法使用'eval_generate'生成额外资源:服务器错误500:未被授权调用/file_metadata/files/configs/lib/mysql-connector-java-5.1.46.jar的search接口,参数为{:rest=>"files/configs/lib/mysql-connector-java-5.1.46.jar", :links=>"manage", :recurse=>true, :source_permissions=>"ignore", :checksum_type=>"md5"}
错误:/Stage[main]/Wso2base::Configure/Wso2base::Push_files[lib/mysql-connector-java-5.1.46.jar]/File[/mnt/wso2ei-6.1.1/lib/mysql-connector-java-5.1.46.jar]: 无法评估:无法获取puppet:///files/configs/lib/mysql-connector-java-5.1.46.jar的文件元数据:服务器错误500:未被授权调用/file_metadata/files/configs/lib/mysql-connector-java-5.1.46.jar的find接口,参数为{:rest=>"files/configs/lib/mysql-connector-java-5.1.46.jar", :links=>"manage", :checksum_type=>"md5", :source_permissions=>"ignore"}
解决步骤:
调整PuppetServer的授权策略
PuppetServer的访问控制规则在/etc/puppetlabs/puppetserver/conf.d/auth.conf文件中,你需要添加允许Agent访问/file_metadata/files接口的规则。打开这个文件,添加以下内容(可以放在默认规则之前):path /file_metadata/files method find,search allow *如果你想更安全,也可以把
*替换成特定的Agent节点名称或IP段,比如allow agent01.example.com或者allow 192.168.1.0/24。验证文件服务配置
检查/etc/puppetlabs/puppet/fileserver.conf,确保files挂载点配置正确,并且PuppetServer进程有对应路径的读写权限:[files] path /etc/puppetlabs/code/environments/production/files allow *确认
path指向的目录存在,并且目录权限为puppet:puppet(PuppetServer运行用户)。重启PuppetServer服务
修改配置后需要重启服务让规则生效:systemctl restart puppetserver验证Agent证书与连接
有时候证书问题也会导致权限验证失败,在Agent节点上执行以下命令测试连接:puppet agent --test --verbose如果有证书相关的错误,需要重新签署Agent证书或者检查证书有效期。
完成这些步骤后,再重新执行Wso2base的配置推送,应该就能正常获取文件元数据并完成jar包推送了。
内容的提问来源于stack exchange,提问作者Jack

