推荐的 Puppet 服务器目录布局是怎样的?

推荐的 Puppet 服务器目录布局是怎样的?

我刚刚设置了一个新的 Puppet 服务器,想知道最佳实践的目录结构是什么?我浏览了不同的论坛和 Puppet 网站,让我印象深刻的是,每个人似乎都以不同的方式布局。没有推荐的方式和目录结构吗?

到目前为止我已经:

puppet/
   + manifests/
      + site.pp  
      + nodes/
          + production/
              + nodes.pp
          + dev/
              + nodes.pp
   + modules/

我只是有点困惑 :)

所以我想我要把它分离到服务器角色,比如“webserver”,它有一个像“httpd”或“nginx”这样的服务

什么是最好的方法来布置这一切,因为它让我抓狂,似乎没有一个首选的方法来做到这一点,或者也许我只是在所有其他信息中错过了它: (

这就是您构造目录的方式吗?

puppet/
   + manifests/
      + site.pp  
      + nodes/
          + production/
              + nodes.pp (Nodes have roles)
          + dev/
              + nodes.pp
       + roles/
           + web-server-apache.pp (Roles have modules)
   + modules/
       + web-server-apache/
           + manifests/
               + init.pp (This is where "httpd" gets defined and installs latest httpd)
           + templates/
           + files/

答案1

是的,标准目录布局看起来像这样 - 您看到这种结构有什么样的变化?

您的不同服务(httpd、nginx)应分别由目录内的模块处理modules,而将这些模块附加到节点以包含在其配置目录中将在 中进行manifests

您希望如何定义您的角色?通常,这应该在您的节点定义中完成,无论是nodes.pp通过 加载的清单目录中的文件site.pp,还是使用 Hiera 进行节点定义(如果您愿意,我绝对推荐这样做)。

答案2

我建议使用 Geppeto 之类的 IDE 根据 Puppet 模块样式指南来管理您的模块。Geppetto 将创建所需的文件和目录结构。

答案3

所以我想我要把它分离到服务器角色,比如“webserver”,它有一个像“httpd”或“nginx”这样的服务

我想您问的是您是否可以将模块组织到文件系统的树中。大多数情况下,人们不会这样做。他们只是将大量模块放在模块目录中,并为其赋予漂亮的描述性标签/名称。

为特定模块创建一些结构很有用。例如,您可能有一个role模块,您可以创建一个类,如 role::webserver which includes in modules that configure particular services. But ifrole::webserver`,它只是包含类,您可以在节点定义、enc 或 hiera 中应用相同的内容。

在您的示例中,您建议在 下定义服务services::。如果您想要使用 forge 的模块,您会发现这很难维护。原因很简单,因为所有 forge 模块基本上都假设它们位于顶层。您必须大量重写下载的任何模块,以使其适合您的结构并使用它。

所以我的建议是,放弃树的想法,并接受你将拥有一个大的平面目录模块目录。

相关内容