Minha abordagem para coisas como essa é usar o módulo concat , que cuidará de todas as notificações para construir o próprio arquivo de configuração e envolvê-lo nas definições de recursos específicas do aplicativo. O que quero dizer com essa última parte é algo assim:
class jboss {
concat { '/path/to/jboss/config/file':
owner => 'whoever',
group => 'whoever',
mode => 'whatever',
}
concat::fragment { 'jboss header':
target => '/path/to/jboss/config/file',
content => template('jboss/config.header.erb'),
order => 00,
}
concat::fragment { 'jboss footer':
target => '/path/to/jboss/config/file',
content => template('jboss/config.footer.erb'),
order => 99,
}
}
define jboss_config ($config) {
concat::fragment { "jboss config ${title}":
target => '/path/to/jboss/config/file',
content => template('jboss/config.item.erb'),
# Alternately, if your needs are simple enough:
#content => "${config}\n",
}
}
Como você está envolvendo a concatenação de arquivos, os módulos do cliente não precisam saber sobre o mecanismo exato que você está usando para a configuração, e você pode adicionar parâmetros ao recurso conforme necessário para descrevê-lo de maneira natural. (isto é, não ter que escrever strings que correspondam à sintaxe do arquivo de configuração, mas especificando apenas os dados de configuração necessários.)