我试图找到管理并非所有操作系统平台都可用的依赖项的最佳方法。我们的食谱是跨平台的,它同时针对 Linux 和 Windows 系统。然而,我们最近的一项要求是添加仅在 Linux 上需要的功能。
正常情况下,我会在metadata.rb中使用“ depends ”行来根据需要指定单独的说明书。例如:
depends 'hostfile_edit', '=0.1.2'
出于安全原因,我们的 Chef 系统分为两个不同的组织 - Windows 和 Linux。但是,在这种情况下,“hostfile_edit”说明书仅在 Linux 组织上可用。因此,当我们在 Windows 上运行rake 单元时,我们会遇到失败,因为 Chef 无法引用这本其他食谱。rake 单元在Linux 系统上运行时运行良好。同样,在部署中使用说明书时,在 Windows 上会出现故障,但在 Linux 上不会。