是否有像木偶或厨师可以pipe理主机之间的依赖关系?

厨师/傀儡是pipe理各个主机configuration的好工具,但是当主机之间存在依赖关系时,它们似乎略有下降。 例如,我想有一个Web服务器configuration,试图启动一个应用程序,但只有当数据库已经启动(在另一台主机上)。 是否有一些类似的工具,允许指定跨越主机的configuration,还是有一些额外的厨师或傀儡,使这成为可能?

你可以做的一件事就是从数据库主机中导出应用程序资源。 它不能保证数据库正在运行,但是,再一次,什么都不会。 毕竟,数据库可能会在之后停下来,Puppet直到下一次运行才会知道。

无论如何,它看起来像这样:

node 'database' { service { 'mysql': ensure => running } @@apache2::app { 'myapp': ensure => running, tag => 'appserver', } } node 'appserver' { Apache2::App <<| tag == "$hostname" |>> } 

如果将这与Davey的build议结合起来,可以进一步将应用程序启动到数据库testing:

  @@apache2::app { 'myapp': ensure => running, dbtest => "$fqdn user database --password=12345", tag => 'appserver', } define apache2::app(ensure = running, dbtest = '') { service { 'apache2': ensure => $ensure require => $dbtest ? { '' => undef, default => Exec['test database'], }, }, exec { "mysqlaccess $dbtest": alias => 'test database', } } 

我认为你可以写一个傀儡/因为一个习惯的事实做到这一点。 以下是puppetlabs网站的解释:

http://projects.puppetlabs.com/projects/1/wiki/Adding_Facts

基本上,如果你可以用ruby编写testing,那么你可以创build一个事实,并将其部署到你的木偶客户端。