Uma coisa que você poderia fazer seria exportar o recurso do aplicativo do host do banco de dados. Isso não garantiria que o banco de dados está sendo executado, mas, novamente, nada acontecerá. Afinal de contas, o banco de dados pode ser parado depois, e Puppet não saberia nada sobre isso até a próxima vez que for executado.
Parece algo assim:
node 'database' {
service { 'mysql': ensure => running }
@@apache2::app { 'myapp':
ensure => running,
tag => 'appserver',
}
}
node 'appserver' {
Apache2::App <<| tag == "$hostname" |>>
}
Se você combinar isso com a sugestão de Davey , poderá vincular ainda mais o início do aplicativo a um teste do banco de dados :
@@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',
}
}