Parece muito "processual", IMO. Você tem que pensar de uma maneira "declarativa". Eu pessoalmente apenas criaria .rpm's ou .debs daqueles tarballs, e especificaria outro repo para usar, então tudo que você teria que fazer seria algo assim:
class tomcat {
Package { "tomcat":
ensure => installed,
}
File { "/etc/init.d/tomcat":
source => "puppet:///tomcat/tomcat.initd",
}
}
Essas múltiplas configurações também parecem desnecessárias, eu usaria apenas cláusulas de Exec, mas com aliases para cada tipo de Exec.
Exemplo:
Exec { "/bin/tar xzf /root/tomcat6.tgz":
name => "tomcat-extract",
<rest of content here>
}
...
File { "${tomcatDir}":
...
require => Exec["tomcat-extract"],
...
}