在另一个配置文件中包含[puppet]配置文件是否会破坏模块配置文件角色模式?

时间:2017-05-08 18:46:32

标签: puppet

我是puppet的新手,正在试图弄清楚如何组织模块,配置文件和角色。我对模块 - 配置文件 - 角色模式的一般理解是每个服务器都有一个角色,角色是从配置文件构建的,配置文件是从模块构建的。这是一个粗略的图表,我帮助我想象这个:

enter image description here

我有一个配置文件,其中我想要包含另一个配置文件(使用上面的示例:wordpress-server可能包括server-core,因为我永远不会部署没有服务器核心的wordpress-server)。

这会破坏模式吗?

编辑:

为了根据反馈扩展我的问题,这里有一组假设的个人资料。我将以一种特殊的方式命名,以便我们可以看到它们如何从彼此继承:下划线将用于表示配置文件继承自另一个(子)配置文件。

|-profile/manifests/ |---- base |---- base_linux |---- base_linux_server |---- base_linux_workstation |---- base_windows |---- base_windows_workstation |---- base_windows_server

现在让我们添加一个名为" harddened"这是跨平台的,我们希望它在所有服务器上。这有点混淆了我们的命名方案,但我们可以管理:

|-profile/manifests/ |---- base |---- base_linux |---- base+hardening_linux_server |---- base_linux_workstation |---- base_windows |---- base_windows_workstation |---- base+hardening_windows_server |---- hardening

现在让我们搞砸了,为工作站和服务器创建一个配置文件:

|-profile/manifests/ |---- base |---- base_linux |---- base+hardening_linux_server |---- base_linux_workstation |---- base_windows |---- base_windows_workstation |---- base+hardening_windows_server |---- hardening |---- base+hardening_linux_server_+_base_linux

好吧,这有点乱,但我真正担心的是,如果我们没有使用这个命名方案,这会对新招聘人员产生影响:

|-profile/manifests/ |---- base |---- linux_core |---- linux_server |---- linux_workstation |---- windows |---- desktop_pc |---- win_server |---- hardening |---- server_and_workstation

如果新招募的任务是创建一个新角色,那么就没有办法理解这个缺乏对每个概况的看法。在其他配置文件中包含配置文件打破了我们可以查看模块/配置文件/以查看要包含在角色中的内容的假设。

所以,重新说一下我的初步问题:

此配置文件是典型的和预期的,还是这一切都发生了,因为我打破了模块配置文件角色模式?

1 个答案:

答案 0 :(得分:1)

配置文件很多,角色是单数。因此,您的角色应该仍然是单身人士,但在个人资料中包含个人资料却没有问题,因为您仍然会将代码保持干净状态。

你说你担心可能会有后果,但我无法想到任何真正发生的事情,除了它可能会增加你的控制回购中的清单数量。

重要的是要记住,角色和个人资料模式不是福音。它是一个框架,可确保您的代码保持干燥状态,并使您的开发人员/系统管理员更容易想象部件如何组合在一起。如果适用于您的组织或团队,有时可以弯曲甚至违反规则。

例如,我正在与一个拥有非常大的基本配置文件的团队合作,其中包含所有组件模块,并且变得难以管理。所以我帮助将它重构为这样的东西:

class profiles::base {

  # include all base profiles
  include ::profiles::base::issue
  include ::profiles::base::motd
  include ::profiles::base::ntp
  include ::profiles::base::postfix
  include ::profiles::base::resolver
  include ::profiles::base::selinux
  include ::profiles::base::snmpd
  include ::profiles::base::sshd
  include ::profiles::base::sysctl

  # include all hardening profiles
  include ::profiles::base::hardening::auditd
  include ::profiles::base::hardening::firewall
  include ::profiles::base::hardening::limits
  include ::profiles::base::hardening::networking
  include ::profiles::base::hardening::shadow
  include ::profiles::base::hardening::xconfig
}

这意味着您在基础内部有子配置文件,否则基本配置文件会很快变得非常复杂。