我正在考虑将我的角色转换为 JSON 语法,并在其中存储一些额外的数据,供外部非 chef 应用程序(特别是 Vagrant)使用。我的想法是,如果我坚持每台机器只获得一个角色的约定,我可以让 Vagrant 遍历我的角色目录并自动为每个机器配置一个单独的 VM。
问题是不同的角色可能需要不同的 Vagrant 设置(例如 CPU、内存、转发端口等),所以我想我可以将所有这些东西存储在每个角色文件中的“vagrant”键下。在我的测试中,我发现我可以在这些文件中创建我想要的任何密钥,并且当您上传它们时,Chef 服务器会简单地删除它们。这很好,因为无论如何唯一需要查看它们的是 Vagrant(它只是解析本地文件)。
大家怎么看?这是一个坏主意吗?我看不出这怎么可能会伤害到任何东西,但由于我从未听说过其他人做过这样的事情,我想我应该四处打听一下。
我不认为有任何保证这会永远有效 - 但如果它今天有效,我认为这不会很快改变。
所以这不会阻止我,但我可能无论如何也不会这样做 - 当您想创建一个不应该有相应 VM 的角色时会发生什么?例如,一个基本角色从其他两个角色中抽象出公共组件。
我更喜欢一个单独的目录,其中包含供 Vagrant 循环使用的 yaml/json 文件,也许按照约定将它们映射到 Chef 角色。
尽管在某些细节上存在分歧,但我认为这是个好主意 - 它对您来说效果如何?
Test Kitchen是食谱测试的更好解决方案。