我的目标是让我的用户从基础Linux机器开始,安装puppet,克隆我的GitHub仓库并运行puppet apply myapp.pp
,这应该使用puppet:
1)使用任何先决条件等配置系统, 2)git clone另一个包含我的应用程序代码的repo 3)编译,安装和配置我的应用程序。
让Puppet做1,2和3的细节看起来相当简单,但我无法理解的是我应该写一个Puppet模块,还是只写一个Manifest?
我从Manifest开始,但模板似乎没有用,木偶总是抱怨它找不到.erb文件。这项工作可以在这里看到:https://github.com/adamretter/exist-puppet。
在进行一些查询之后,我被告知我需要将我的代码重构为Puppet模块,我已经开始在这里进行:https://github.com/adamretter/puppet-exist。
但是似乎没有办法在模块上运行puppet apply
,那么我该如何实现我想要的呢?有人说我需要从一个小的.pp文件存根调用我的模块,但是我不知道如何在同一个git repo中这样做,就像我试图包含它一样,它说它找不到我的模块?
有什么好的例子可以解决这个问题吗?
我试图遵循Puppet文档,但它似乎跳跃或假设太多:https://docs.puppetlabs.com/guides/module_guides/bgtm.html
答案 0 :(得分:1)
首先,在运行命令时发布错误,这有助于调试问题。以下是您可以遵循的一些提示:
要应用独立模块,您需要具有以下结构:
<modulename>/manifests/init.pp
/<subname>.pp
init.pp
内容可能如下所示:
class <modulename> {
notify {"New module using Puppet apply":}
include <modulename>::<subname>
}
subname.pp
内容可能如下所示:
class <modulename>::<subname> {
# Some manifest
}
所有这些文件都需要在客户端计算机上实际存在才能使puppet apply
正常工作。在运行<modulename>
命令时,您需要位于puppet apply
的父目录中。你可以,
puppet apply -e 'include <modulename>'
正如@FelixFrank建议的那样,您可以将modulepath
作为参数。
puppet apply -e 'include <modulename>' --modulepath=/path/to/modules