LWRP é provavelmente excessivo para o que você está tentando fazer. Algo para lembrar é que as receitas são apenas Ruby e qualquer Ruby que você escreve fora de um bloco é executado durante a fase de compilação. Então, com isso em mente, você pode gerar programaticamente blocos que são executados na fase de convergência.
O exemplo mais simples para resolver seu problema é fazer algo assim:
%w(jdk package2 package3).each do |pkg|
package pkg do
retries 12
retry_delay 5
end
end
Para ir além, você pode usar um hash em vez de um Array:
{
'jdk' => {
'version' => '1.8.0_92',
'flush_cache' => [:before, :after]
},
'package2' => {
'version' => '1.0.0'
},
'package3' => {}
}.each do |pkg,opts|
package pkg do
retries 12
retry_delay 5
version opts['version'] if opts.has_key? 'version'
flush_cache opts['flush_cache'] if opts.has_key? 'flush_cache'
end
end
Você também pode armazenar o Hash ou Array em atributos, mas lembre-se de que os atributos não são um Hash verdadeiro, eles são um Mash e há alguns has'chas lá ao tentar substituir atributos, mas isso é totalmente discussão diferente.