我是puppet的新手,正在试图弄清楚如何组织模块,配置文件和角色。我对模块 - 配置文件 - 角色模式的一般理解是每个服务器都有一个角色,角色是从配置文件构建的,配置文件是从模块构建的。这是一个粗略的图表,我帮助我想象这个:
我有一个配置文件,其中我想要包含另一个配置文件(使用上面的示例: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
如果新招募的任务是创建一个新角色,那么就没有办法理解这个缺乏对每个概况的看法。在其他配置文件中包含配置文件打破了我们可以查看模块/配置文件/以查看要包含在角色中的内容的假设。
所以,重新说一下我的初步问题:
此配置文件是典型的和预期的,还是这一切都发生了,因为我打破了模块配置文件角色模式?
答案 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
}
这意味着您在基础内部有子配置文件,否则基本配置文件会很快变得非常复杂。