厨师食谱依赖于系统软件而不是另一本食谱
chef cookbook dependency on system software not on another cookbook
作为平台设置编排的一部分,我们使用我们的 python 包在云中的机器集群上安装各种软件包。
我们有以下场景:
我们的 python 软件包会启动某些软件包(比如 A、B、C)的安装,然后同时启动某些其他软件包(比如 D、E、F)的安装。
(N.B:D、E、F 是通过我们的厨师食谱,A、B、C 是通过我们的 python 程序)
我们的问题是软件D(通过chef cookbook安装)依赖于软件A。
由于 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'],
}
更新: 更新了人偶清单示例。
我应用了以下步骤来解决我的问题
- 找到独立软件安装后创建的目录
- 等待目录创建(使用 ruby 块代码休眠),然后开始安装依赖软件以确保满足依赖关系。
解决了我的问题..
作为平台设置编排的一部分,我们使用我们的 python 包在云中的机器集群上安装各种软件包。
我们有以下场景:
我们的 python 软件包会启动某些软件包(比如 A、B、C)的安装,然后同时启动某些其他软件包(比如 D、E、F)的安装。 (N.B:D、E、F 是通过我们的厨师食谱,A、B、C 是通过我们的 python 程序)
我们的问题是软件D(通过chef cookbook安装)依赖于软件A。
由于 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'],
}
更新: 更新了人偶清单示例。
我应用了以下步骤来解决我的问题
- 找到独立软件安装后创建的目录
- 等待目录创建(使用 ruby 块代码休眠),然后开始安装依赖软件以确保满足依赖关系。
解决了我的问题..