You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Puppet Manifest添加打印机时Cups模块参数错误求助

问题原因分析

报错的核心是cups类的package_names参数收到了未定义值(Undef),但该参数要求必须是字符串或数组类型。

具体触发原因:

  • 你使用的leoarnold-cups 2.2.2版本中,cups类的package_names默认值依赖::cups::params::package_names,这个值是模块的params.pp文件根据节点操作系统(通过$::osfamily或$::operatingsystem系统变量)来定义对应包名的。
  • 目标节点ws-ac2d.local的操作系统不在模块支持的列表里,导致params类无法生成有效的package_names值,最终传递了Undef给cups类,触发类型校验失败。
  • 另一种可能是节点的操作系统标识(osfamily/operatingsystem)没有被Puppet正确收集,导致params类找不到匹配的配置分支。
验证与修复建议
  1. 在目标节点上执行facter osfamily或facter operatingsystem,确认操作系统的标识值。
  2. 查看模块的params.pp文件(路径一般是/etc/puppetlabs/code/environments/production/modules/cups/manifests/params.pp),检查里面是否包含你的节点操作系统对应的package_names定义。
  3. 如果操作系统不在支持列表里,直接手动指定package_names参数即可解决,修改后的清单示例:
class mc_hp_mfp_m428fdn_hp0a7a0e_10_139_2_85 {
    class { '::cups':
        package_names => ['cups'], # 替换为你操作系统对应的CUPS包名,多数系统都是'cups'
    }
    cups_queue { 'mc_hp_mfp_m428fdn_hp099a15_10_139_2_85':
        ensure    => 'printer',
        model     => 'drv:///sample.drv/generpcl.ppd',
        uri       => 'ipp://10.139.2.85',
        accepting => true,
        enabled   => true,
        shared    => false,
        location  => 'Местоположение неизвестно',
    }
}

内容的提问来源于stack exchange,提问作者Chumka Doc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:57:07