0

我目前正在使用 Craig Dunn 的角色/配置文件范式构建一个新的 puppet 存储库,并遇到了一个(可预见的)问题,试图减少节点定义以仅包含它们的角色。

我正在使用全局变量(默认定义在顶级范围内)来实现通用类中的基本区别(例如,确定哪些用户可以获得 ssh 访问权限)。但是由于我不想在节点定义中覆盖它们,所以我正在寻找一种在配置文件中设置它们的好方法。

基本上我的问题是 puppet 的静态作用域:我不能只在角色类中覆盖它们,因为它不会像动态作用域那样被继承给子级,而且我不能调用模块中的限定名称因为我不知道它是从哪个类调用的。

到目前为止,我有解决问题的想法:

  1. 在顶级范围内定义角色并覆盖那里的变量
    如果其他一切都失败,这可能是肮脏的解决方法。虽然我不确定这些类是否会获得某种具有实际覆盖能力的子顶级范围。

  2. 找出 hiera 是否能够看到调用它的模块/类层次结构并给我相应的值。遗憾的是,我还没有为 hiera 找到一个像样的文档/教程。

  3. 创建一个继承地狱 - 我宁愿不考虑它,它甚至看起来都不可能

  4. 创建一个参数化类的地狱——随着时间的推移,会有很多变量需要通过,这会导致很多冗余和错误源

  5. 制作包含在配置文件中的顶级范围类。虽然我再次不确定这是否可行(见 1))

有没有人有一个尽可能不脏的好解决方案?或者你能确认我的一个想法吗?

顺便说一句:我想将节点定义减少到角色,包括因为我想将 puppet 仪表板用作 ENC 并很快进行日志记录。

4

1 回答 1

1

您是否考虑过向 Hiera 添加一个名为 Roles 的层次结构级别?

要完成这项工作,您需要:

  1. 在您的节点定义中添加一个变量,定义哪个角色是当前角色
  2. 将事实添加到具有角色的节点

这将使 Hiera 能够为该角色选择一个特定的 yaml 文件。在此文件中,您可以指定用户。

您也可以在配置文件级别执行此操作。

于 2014-01-08T11:40:48.480 回答