如何使用参数化类来减少代码库

时间:2011-08-30 20:46:14

标签: puppet

我写了木偶清单,我用木偶来部署我的系统。 我现在正在重构清单,以使其可维护。

其中一个子系统是带有webapplications的tomcat。 我有~10个webapps。其中每个都有几乎相同的部署过程。 现在我使用课程。 10个文件 - 几乎相同。

当我尝试使用参数化类时,puppet只允许我实例化一次。 然后我尝试创建继承自webapp类的“空”类。 它不起作用,因为puppet抱怨参数不通过父类。

我没有看到任何可以抽象代码的方法。怎么做?

我想实现:

   node {
     class {"webapp::first": param1 = one}
     class {"webapp::second": param1 = two}   
   }

其中第一个和第二个是使用相同配方的应用程序。

我知道有定义,但配方非常大,即使有可能我发现类更具可读性。

2 个答案:

答案 0 :(得分:4)

您可以在类中使用参数,但定义更符合您的要求。引用官方文档

  

类和定义类型的创建方式类似,但它们的使用方式却截然不同。

     

定义的类型用于定义可在给定主机上具有多个实例的可重用对象,因此>它们不能包含任何只有一个实例的资源。例如,>的多次使用。同样的定义不能创建相同的文件。

请参阅http://docs.puppetlabs.com/guides/language_guide.html#resource-collections

答案 1 :(得分:0)

尝试使用用户定义的类型类本质上是单身