我有一个新安装的 Puppet 服务器,其中只配置了一个模块和一个管理客户端。
这是一个 MOTD 模块,如下所示:
class motd {
file { "/etc/custom_motd.sh":
path => '/etc/custom_motd.sh',
ensure => present,
owner => "root",
group => "root",
mode => "775",
content => template('motd/custom_motd.sh.erb'),
#require => Class['nagios_client'],
}
# file_line { 'enable motd':
# ensure => present,
# line => '/etc/custom_motd.sh',
# path => '/etc/profile',
# require => File['/etc/custom_motd.sh']
# }
}
当我puppet agent -t
在客户端运行时,我得到了正确的结果:
[root@pnd01 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for pnd01.company.com
Info: Applying configuration version '1426413575'
Notice: /Stage[main]/Motd/File[/etc/custom_motd.sh]/ensure: created
Notice: Finished catalog run in 0.24 seconds
[root@pnd01 ~]#
init.pp
但是,如果我取消注释模块文件中的“文件行”部分,然后puppet agent -t
在客户端上运行,我会得到以下响应:
[root@pnd01 ~]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type file_line at /etc/puppet/environments/production/modules/motd/manifests/init.pp:17 on node pnd01.company.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
[root@pnd01 ~]#
第 17 行指向“file_line”声明。我在另一个 Puppet 环境中有完全相同的模块,它在那里运行良好。我在 Google 上查找并找到一篇建议添加的帖子:
pluginsync = true
到客户端机器上[main]
的部分,我已经这样做了,但仍然收到相同的错误。/etc/puppet/puppet.conf
知道如何解决这个问题或者为什么会发生这种情况吗?
答案1
您可能需要安装标准库。在您的其他安装中,这可能已被您安装的其他模块所引入。
此后,将其与 一起使用include stdlib
。
答案2
使用以下方式安装 stdlib:
puppet module install puppetlabs-stdlib
还在脚本顶部包含以下行。
include stdlib