title: how to use parametrized classes to reduce code base
body: <p>I wrote puppet manifests and I use puppet to deploy my system.
  I am now refactoring manifests in order to make it maintainable.</p>
  
  <p>One of sub systems is tomcat with webapplications.
  I have ~10 webapps. Each of those has almost the same procedure to deploy.
  For now I use classes. 10 files - almost identical.</p>
  
  <p>When I tried to use parametrized class, puppet lets me instantiate it just once.
  Then I tried to create 'empty' classes which inherit from webapp class.
  It does not work as well because puppet complains that parameters are not passed parent class.</p>
  
  <p>I do not see any method I could abstract the code. How to do it?</p>
  
  <p>I would like to achieve:</p>
  
  <pre><code>   node {
       class {"webapp::first": param1 = one}
       class {"webapp::second": param1 = two}   
     }
  </code></pre>
  
  <p>where first and second are applications using the same recipes. </p>
  
  <p>I know there is define, but recipe is pretty big and even if it would be possible I find class more readable. </p>