我目前正在使用Craig Dunn的角色/配置文件范例构建一个新的puppet存储库,并遇到一个(可预见的)问题,试图将节点定义减少到只包括他们的角色。
我正在使用全局变量(在顶级作用域中默认定义)来实现常见类的基本区分(例如,确定哪些用户获得ssh访问)。但是因为我不想在节点定义中覆盖它们,所以我正在寻找一种在配置文件中设置它们的好方法。
基本上我的问题是puppet的静态范围:我不能只在角色类中覆盖它们,因为它不会像动态范围一样继承给孩子,我不能调用限定名在模块中,因为我不知道它叫哪个类。
到目前为止,我的想法是解决问题:
在顶级作用域中定义角色并覆盖其中的变量
如果其他一切都失败了,这可能是肮脏的解决方法。虽然我不确定这些类是否会获得某种超顶级范围,并且能够实际覆盖它。
找出hiera是否能够看到哪个模块/类层次结构调用它并给我相应的值。可悲的是,我还没有找到适合hiera的文档/教程。
创建一个继承地狱 - 我宁愿不去思考它,它似乎不可能
创建一个参数化的类地狱 - 随着时间的推移会有很多变量要通过,这会导致大量的冗余和错误来源
制作包含在配置文件中的顶级范围类。虽然我不确定这会起作用(见1))
有没有人有一个很好的解决方案,尽可能不宽裕?或者你能否证实我的一个想法?
顺便说一句:我想将节点定义减少到角色,包括因为我想将木偶仪表板用作ENC并尽快登录。
答案 0 :(得分:1)
您是否考虑过向Hiera添加一个名为Roles的层次结构级别?
要完成这项工作,您需要:
这将使Hiera能够为该角色获取特定的yaml文件。在此文件中,您可以指定用户。
您也可以在个人资料级别执行此操作。