自定义 type/provider 不区分大小写的标题

custom type/provider case insensitive title

是否可以通过 munge 调用或类似方式规范化标题值?

我有一个自定义 type/provider 管理 Windows 机器上的本地组成员资格(我们需要更精细的组成员资格,而不仅仅是在 user/group 类型中。

group_member{"Group => Member":
   ensure=>present,
}

group_member{"Group => DOMAIN\Member":
   ensure=>present,
}

resources{'group_member':
   purge =>true,
}

一般来说,当一切都一致时,一切都会很好。问题在于 windows/active 目录不区分大小写。因此,当 self.instances 被调用时,它会生成资源 Group_member["Users => DOMAIN\SomeGroup"],但在我们的 puppet 清单中,Users 是硬编码的,DOMAIN 来自事实,而 SomeGroup 来自 hiera 值。

我们为此与 puppet 的大小写敏感性斗争了大约 5 年,我们的大多数管理员已经习惯于确保域和 yaml 配置之间的大小写匹配。

现在,我们遇到了一个新问题...不知何故 DOMAIN 搞砸了。在新的测试域中,NETBIOS 名称是小写的。事实上,我们返回的 DOMAIN 仍然是 returns 大写,但 Windows ADSI 返回的是小写形式。如果我们不使用 resources{'group_member': purge=>true},这将不是问题,但现在在这个测试环境中,每个木偶都可以添加(通过它们各自的 .pp 文件)和删除(通过 resources{'group_member': purge=>true}})组运行.

理想情况下,我想将 self.instances 和我们所有 .pp 文件中的所有内容标准化为小写,但我们有 400 个木偶模块,我们使用 group_member 120 次,由很多不同的团队。如果我可以 munge 标题元参数,那会容易得多。

有什么建议吗?

所以,我处理这个的方法是重命名现有的 type/provider 并将其包装在一个定义类型中,该类型是 title.