我在虚拟主机上安装了 puppet 以进行试驾。我正在使用 epel 的当前版本 2.6.18。为简单起见,此测试安装将使服务器和客户端在同一系统上运行。
安装 puppet 后,我跑去puppet master --mkusers
启动服务器。都好。
--configtest 显示我的模块目录是默认/etc/puppet/modules
文件夹。
我创建了文件夹结构 /etc/puppet/modules/ntp/manifests/,然后创建了一个 ntp.pp 文件,如下所示:
class ntp {
package {'ntp':
ensure => present
}
service {'ntp':
ensure => running,
}
}
include ntp
发出puppet --parseonly /etc/puppet/modules/ntp/manifests/ntp.pp
干净的回报。没有错误。
接下来,我发出
puppet agent --test --server=`hostname
然后回来
info: Caching catalog for localhost.localdomain
info: Applying configuration version '1256130640'
notice: Finished catalog run in 1.23 seconds
我已通过检查确认尚未安装 ntprpm -qa ntp
发出puppet --configprint all
确认上述模块路径。
我究竟做错了什么?
您没有为 Puppet 自动加载器使用正确的文件结构和命名约定来正确查找和应用您的模块清单。您
ntp.pp
应该被调用init.pp
,并且您的服务器应该有一个节点定义,该节点定义具有include ntp
.这意味着您应该具有这种目录结构:
site.pp
:init.pp
:之后,您的
puppet agent --test
运行应该按预期工作。您的下一站是Learning Puppet文档:http ://docs.puppetlabs.com/learning/index.html
编辑:请注意,Puppet 2.6.18 是古老的,很久以前就已经结束了。甚至 Puppet 2.7.x 也将在 10 月 1 日达到 EOL。如果您带 Puppet 进行试驾,请使用当前的 Puppet 3.2.x 系列。软件包可用于每个主要操作系统和发行版,对于 RHEL/CentOS,请参阅http://yum.puppetlabs.com/。