Isso porque você está definindo dois recursos jbossas:makepropies
com o mesmo nome, independentemente do nome do recurso jbossas::instance
de nível superior, portanto, 'node01' e 'node02' estão tentando criar jbossas:makepropies
com um título de 'kupo.properties'.
Isso é causado pela falta de capacidade de loop completo do Puppet dentro dos manifestos. Se você declarar uma variável como uma matriz, não há nenhuma maneira (que eu saiba) de percorrer essa matriz dentro de seus manifestos.
Você pode contornar isso diferenciando os nomes dos recursos:
jbossas::instance { 'node01':
...
propfiles => [ "${name)_kupo.properties", "${name}_web.properties" ],
}
Em seguida, tire isso em jbossass:makepropies
define jbossas:makepropies (
$version = 7,
$instancedir = '',
$jboss_name = "jboss",
) {
$title_array = split($title,'_')
$file_name = $title_array[1]
file { "${instancedir}_${jboss_name}_${file_name}" :
ensure => file,
path => "${instancedir}/configuration/${file_name}",
content => template("jbossas/jboss${version}/${file}.erb"),
require => Jbossas::Profile[$jboss_name],
}
}
Não é de forma alguma a solução mais eloqüente, mas sem o suporte de loop completo no Puppet, é o melhor que eu conheço - a solução mais programática seria escrever algo assim em jbossas::instance
(estou usando o pseudocódigo abaixo) ):
foreach ($propfiles as $propfile) {
jbossas::makepropies { $propfile:
version => $version,
instancedir => $instancedir,
jboss_name => $name,
}
}
Veja esta pergunta do StackOverflow para mais detalhes.