我想安装 splunkforwarder,但现有的模块都无法正常工作。因此,我决定从头开始编写它,但有趣的是,我只好安装软件包了。
因此,我在 Puppet Master 服务器上创建了一个存储库。该存储库可以正常工作。如果我在客户端上执行 yum install,我就可以安装 splunkforwarder,并且它会在 /opt 下正确安装。因此,对我来说,存储库不是问题。
所以,我只想要最基本的、不需要配置的安装。
class splunk2 {
package { "splunkforwarder": ensure => "installed" }
}
这不起作用。没有日志,客户端也没有抛出错误——也没有提到安装它。
只有两个文件;init.pp 和 up.pp
init.pp 仅包含;
class splunk2 {
}
仍然是同样的问题。我就是想不出哪里出了问题,因为如果我只想安装包的话,这似乎应该是非常简单的。
有任何想法吗 :(?
编辑:我确实将 lololdolaol 放入了 up.pp,而 puppet 没有抱怨。这几乎就像它忽略了这个模块。
答案1
是的,Puppet 忽略了该模块,因为它的结构不符合 Puppetmaster 的类自动加载器所接受的方式。
从头开始,你的模块放在哪里?可能在/etc/puppet/modules
。因此,在那里你有以下目录和文件结构:
<modulename>/files/
<modulename>/templates/
<modulename>/manifests/
<modulename>/manifests/init.pp
模块结构中还有其他几个目录,但这三个是迄今为止最常用和最重要的目录。files
和templates
目录是可选的,而manifests
目录是必需的,如果您的模块包含类或更一般的清单。您将类放在那里。在大多数情况下,文件init.pp
也是必需的。
您的模块目录和文件现在如下所示:
splunkforwarder/files/
splunkforwarder/templates/
splunkforwarder/manifests/
splunkforwarder/manifests/init.pp
你的init.pp
可以包含所有的魔法:
class splunkforwarder {
package { 'splunkforwarder':
ensure => 'installed',
}
}
您已定义一个类“splunkforwarder”,用于管理同名的单个包。您现在可以执行
include 'splunkforwarder'
在您的节点配置中,splunkforwarder 包应该在下次运行 Puppet 时安装。