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

时间:2014-09-15 13:37:04

标签: puppet

我的目标是让我的用户从基础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

1 个答案:

答案 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