厨师食谱对系统软件的依赖不在另一本食谱上

时间:2015-06-23 08:42:22

标签: python automation chef orchestration

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

我们有以下情况:

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

  2. 我们的问题是软件D(通过厨师食谱安装)取决于软件A.

  3. 由于D取决于A,因此D的cookbook在系统中找不到A并且失败。

  4. 我的想法是,如果我们可以依赖厨师食谱说只有在系统中找到A才能继续等待!

    有可能吗?有没有上述问题的替代方案?

    由于

2 个答案:

答案 0 :(得分:0)

您可以考虑使用puppet。 Whit puppet你可以定义所需的resources(例如package)并在资源之间定义relationships

E.g puppet manifest:

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

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

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

答案 1 :(得分:0)

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

  1. 找到安装独立软件后创建的目录
  2. 等待创建目录(使用ruby块代码进行休眠),然后启动相关软件的安装,以确保满足依赖性。
  3. 解决了我的问题..