在 .json 角色/环境文件中存储外部(即非 Chef)应用程序的额外数据

在 .json 角色/环境文件中存储外部(即非 Chef)应用程序的额外数据

我正在考虑将我的角色转换为 JSON 语法,并在其中为外部非 Chef 应用程序(特别是 Vagrant)存储一些额外数据。我的想法是,如果我坚持每台机器只获得一个角色的惯例,我就可以让 Vagrant 遍历我的角色目录并自动为每个角色配置一个单独的 VM。

问题是不同的角色可能需要不同的 Vagrant 设置(例如 CPU、内存、转发端口等),因此我认为我可以将所有这些内容存储在每个角色文件中的“vagrant”键下。在我的测试中,我发现我可以在这些文件中创建任何我想要的键,Chef 服务器会在您上传它们时简单地将它们删除。这很好,因为无论如何唯一需要查看它们的是 Vagrant(它只是解析本地文件)。

大家怎么看?这是个坏主意吗?我看不出这有什么坏处,但是因为我从未听说过其他人做过这样的事,所以我想我应该问问周围人。

答案1

我认为没有任何保证说这种方法能永远有效——但如果它今天有效,我想短期内也不会改变。

所以这不会阻止我,但我可能不会这么做——当你想创建一个不应该有相应虚拟机的角色时会发生什么?例如,从其他两个角色中抽象出通用组件的基本角色。

我更喜欢一个包含 yaml/json 文件的单独目录,以便 Vagrant 循环遍历这些文件,也许按照惯例将它们映射到 Chef 角色。

尽管在一些细节上存在分歧,但我认为这是个好主意——你觉得效果如何?

答案2

测试厨房是菜谱测试的更好的解决方案。

相关内容