Claro, isso deve ser viável.
Primeiro, você precisaria incluí-lo em algum lugar que se aplique a ambos os nós, depois filtrar a configuração que precisa ser aplicada aos diferentes nós (provavelmente com uma grande declaraçãocase
), ou então ter diferentes classes para o lado do tomcat do aplicativo e o lado do apache (provavelmente seria mais limpo).
Aqui está a abordagem que eu tomaria:
Configure um módulo de várias classes para seu aplicativo cliente:
modules
-> client-app
-> manifests
-> apache.pp
-> tomcat.pp
Configure as classes com a configuração de que você precisa:
class client-app::apache ($tomcatnodes = undef, $https = true) {
package { 'apache2':
ensure => present,
}
# ... etc etc
# use a template file that utilizes the $tomcatnodes and $https
# variables to set the config that you need
}
Em seguida, anexe-os aos seus nós:
node tomcatserver1 {
class { 'client-app::tomcat':
apachenode = 'apacheserver',
https = true,
}
}
node tomcatserver2 {
class { 'client-app::tomcat':
apachenode = 'apacheserver',
https = true,
}
}
node apacheserver {
class { 'client-app::apache':
tomcatnodes = [ 'tomcatserver1', 'tomcatserver2' ],
https = true,
}
}
Algumas outras leituras para você sobre essa implementação: consulte aqui e aqui .