如何使用puppet安装和配置自定义应用程序?

如何使用puppet安装和配置自定义应用程序?,puppet,Puppet,我的目标是让我的用户从一台基本Linux机器开始,安装puppet,克隆我的GitHub repo并运行puppet apply myapp.pp,然后使用puppet: 1) 使用任何先决条件等配置系统, 2) git克隆另一个包含我的应用程序代码的repo 3) 编译、安装和配置我的应用程序 让Puppet执行1、2和3的细节似乎相当简单,但我无法理解的是,我是应该编写一个Puppet模块,还是仅仅编写一个清单 我从一个清单开始,但模板似乎不起作用,puppet总是抱怨找不到.erb文件。这

我的目标是让我的用户从一台基本Linux机器开始,安装puppet,克隆我的GitHub repo并运行
puppet apply myapp.pp
,然后使用puppet:

1) 使用任何先决条件等配置系统, 2) git克隆另一个包含我的应用程序代码的repo 3) 编译、安装和配置我的应用程序

让Puppet执行1、2和3的细节似乎相当简单,但我无法理解的是,我是应该编写一个Puppet模块,还是仅仅编写一个清单

我从一个清单开始,但模板似乎不起作用,puppet总是抱怨找不到.erb文件。这项工作可以在这里看到:

在做了一些询问之后,我被告知我需要将代码重构成一个Puppet模块,我已经开始在这里做了:

然而,似乎没有办法在模块上运行
puppet apply
,那么我该如何实现我想要的呢?有人说我需要从一个小的.pp文件存根调用我的模块,但我看不出如何在同一个git repo中这样做,因为当我尝试包含它时,它说它找不到我的模块

有没有什么好的例子说明这是一件已经完成的事情


我曾尝试遵循Puppet文档,但它似乎做了一些跳跃或假设太多:

首先,在运行命令时发布错误,这将有助于调试问题。以下是一些您可以遵循的提示:

要应用独立模块,您需要具有以下结构:

<modulename>/manifests/init.pp
                      /<subname>.pp
subname.pp
内容可能如下所示:

 class <modulename> {
      notify {"New module using Puppet apply":}
      include <modulename>::<subname>
  }
 class <modulename>::<subname> {
      # Some manifest
 }
正如@FelixFrank所建议的,您可以将
modulepath
作为参数

 puppet apply -e 'include <modulename>' --modulepath=/path/to/modules
puppet apply-e'include'--modulepath=/path/to/modules

非常好!还请注意,模块必须位于当前环境目录中的
$modulepath
(或新的
modules/
中)。作为一个简单的重写,您可以使用另一个参数,
puppet apply-e'include exist'--modulepath=。
假设您在父目录中。@FelixFrank添加了您关于modulepath的建议。谢谢
 puppet apply -e 'include <modulename>' --modulepath=/path/to/modules