安装puppet-archive模块后Puppet无法识别archive资源求助
通过r10k安装puppet-archive模块后,已正确引入该模块,但Puppet无法识别archive资源,抛出错误:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Unknown resource type: 'archive' (file: /etc/puppetlabs/code/environments/repro_issue/modules/role/manifests/archive_issue/archive_issue.pp, line: 4, column: 6) on node MY_NODE
服务器上模块状态显示正常:
$ puppet module list --environment repro_issue | grep "archive" ├── puppet-archive (v7.1.0) $ puppet config print modulepath --environment repro_issue /etc/puppetlabs/code/environments/repro_issue/modules
Puppetfile配置
mod 'puppet-archive', '7.1.0' mod 'puppetlabs/stdlib', '9.6.0'
节点定义
node /MY_NODE/ { include role::archive_issue::archive_issue }
角色内容
class role::archive_issue::archive_issue { include 'archive' -> archive { 'C:\\nginx-1.27.0.zip': ensure => present, source => 'https://nginx.org/download/nginx-1.27.0.zip', extract_path => 'C:\\', } }
其他模块(如puppetlabs-apache、puppetlabs-python、puppetlabs-apt)均可正常工作,仅新增的puppet-archive模块出现此问题,请问遗漏了什么配置?
以下是几个排查和解决方向:
确认Puppet Server节点的模块安装状态
本地执行puppet module list看到模块存在,但如果Puppet Server是独立节点,要检查服务器上的/etc/puppetlabs/code/environments/repro_issue/modules目录下是否真的有puppet-archive模块。如果是本地用r10k拉取的模块,需要同步到Server节点。调整资源依赖的声明方式
include 'archive'虽然声明了引入,但Puppet的资源解析顺序可能存在延迟。可以把箭头依赖换成require参数,确保类完全加载后再创建资源:class role::archive_issue::archive_issue { include archive archive { 'C:\\nginx-1.27.0.zip': ensure => present, source => 'https://nginx.org/download/nginx-1.27.0.zip', extract_path => 'C:\\', require => Class['archive'], } }重启Puppet Server服务
模块安装后,重启服务确保新模块被加载:systemctl restart puppetserver检查版本兼容性
确认puppet-archive 7.1.0和你使用的Puppet Server版本兼容。比如Puppet 7.x对应archive模块7.x系列,若你的Puppet版本是6.x,需要降级archive模块到6.x版本。修复模块目录权限
确保Puppet Server进程(通常是puppet用户)对puppet-archive模块目录有读取权限:chown -R puppet:puppet /etc/puppetlabs/code/environments/repro_issue/modules/puppet-archive chmod -R 755 /etc/puppetlabs/code/environments/repro_issue/modules/puppet-archive
内容的提问来源于stack exchange,提问作者N W

