厨师食谱依赖于系统软件而不是另一本食谱

chef cookbook dependency on system software not on another cookbook

作为平台设置编排的一部分,我们使用我们的 python 包在云中的机器集群上安装各种软件包。

我们有以下场景:

  1. 我们的 python 软件包会启动某些软件包(比如 A、B、C)的安装,然后同时启动某些其他软件包(比如 D、E、F)的安装。 (N.B:D、E、F 是通过我们的厨师食谱,A、B、C 是通过我们的 python 程序)

  2. 我们的问题是软件D(通过chef cookbook安装)依赖于软件A。

  3. 由于 D 依赖于 A,因此 D 的食谱在系统中找不到 A 而失败。

我在想的是,如果我们可以在 chef cookbook 中有一个依赖项,说明只有在系统中找到 A 时才继续,否则请等待!

可能吗?有没有解决上述问题的方法?

谢谢

资源之间可以考虑使用puppet. Whit puppet you can define required resources (eg. package) and also define relationships

例如人偶清单:

package { ["A", "B", "C", "E", "F"]:
  ensure => 'installed',
}

package { "D":
  ensure => 'installed',
  require => Package['A'],
}

更新: 更新了人偶清单示例。

我应用了以下步骤来解决我的问题

  1. 找到独立软件安装后创建的目录
  2. 等待目录创建(使用 ruby 块代码休眠),然后开始安装依赖软件以确保满足依赖关系。

解决了我的问题..