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

Puppet7 Agent无法从服务端获取catalog故障求助

Puppet 7 Agent端获取catalog失败500错误排查方案

本次报错的核心原因是Puppet服务端配置了外部节点分类器(ENC),调用指定的node.rb脚本查询节点信息时执行失败,和证书签名、基础模块配置无关,可按以下步骤排查:


排查步骤

第一步:确认服务端ENC配置

在Puppet服务端执行以下命令,查看节点分类配置:

grep -E 'node_terminus|external_nodes' /etc/puppetlabs/puppet/puppet.conf
  • 如果输出中存在node_terminus = exec以及external_nodes = /etc/puppetlabs/puppet/node.rb,说明服务端启用了外部节点分类器,而你当前使用的是site.pp静态节点定义,不需要ENC,修改配置如下:
    1. 编辑/etc/puppetlabs/puppet/puppet.conf的[master]段,修改为:
      [master]
      node_terminus = plain
      # 注释掉以下ENC相关配置
      # external_nodes = /etc/puppetlabs/puppet/node.rb
      
    2. 重启puppetserver服务生效:
      systemctl restart puppetserver
      
  • 如果确实需要使用ENC,手动执行脚本排查错误:
    1. 先给脚本加执行权限:
      chmod +x /etc/puppetlabs/puppet/node.rb
      
    2. 手动执行脚本查看报错:
      /etc/puppetlabs/puppet/node.rb sles12.eisen
      
      根据输出的报错修正脚本逻辑,或者在ENC后端添加sles12.eisen节点配置即可。

第二步:检查服务端域名解析

确认Puppet服务端/etc/hosts文件中存在Agent端的域名映射:

192.168.160.140   sles12.eisen       sles12

如果不存在请添加,避免服务端无法解析Agent域名导致查询失败。

第三步:检查配置文件权限

确认Puppet运行用户有权限读取环境目录下的所有配置:

chown -R puppet:puppet /etc/puppetlabs/code/environments/production/

第四步:补充模块配置(可选但建议)

你当前编写的filetest1模块没有提前创建父目录,若Agent端/tmp/puppettest目录不存在会触发后续报错,修改init.pp如下:

class filetest1{
  # 先创建父目录
  file {'/tmp/puppettest':
    ensure => directory,
    mode   => '0755',
  }
  file {'/tmp/puppettest/filetest1':
    ensure  => file,
    content => 'Hello World!',
    require => File['/tmp/puppettest'], # 依赖父目录创建完成
  }
}

验证

先在服务端编译节点catalog验证配置是否正确:

puppet master --compile sles12.eisen

如果编译无报错,再到Agent端执行:

puppet agent --test

即可正常拉取配置生成测试文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:03