清单文件未被应用

清单文件未被应用

我在虚拟主机上安装了 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

我已经确认 ntp 尚未安装,方法是检查rpm -qa ntp

发行puppet --configprint all确认上述模块路径。

我究竟做错了什么?

答案1

您没有使用正确的文件结构和命名约定,以便 Puppet 自动加载器能够正确查找和应用模块清单。您ntp.pp应该被调用init.pp,并且您的服务器应该有一个包含 的节点定义include ntp

这意味着你应该有这种目录结构:

$ tree /etc/puppet
/etc/puppet
├── manifests
│   └── site.pp
└── modules
    └── ntp
        └── manifests
            └── init.pp

site.pp

# cat /etc/puppet/manifests/site.pp
node somenode {
    include 'ntp'
}

init.pp

# cat /etc/puppet/modules/ntp/manifests/init.pp 
class ntp {
  package { 'ntp':
    ensure => present
  }
  service { 'ntp':
    ensure => running
  }
}

此后,您的puppet agent --test运行应该可以按预期进行。

你的下一站是学习木偶文档: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/

相关内容