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

Puppet 如何使用参数化类来减少代码基数,puppet,Puppet,我编写了puppet清单,并使用puppet部署我的系统。 我现在正在重构清单以使其可维护 其中一个子系统是带有webapplications的tomcat。 我有大约10个网络应用程序。其中每一个都有几乎相同的部署过程。 现在我使用类。10个文件-几乎相同 当我尝试使用参数化类时,puppet只允许我实例化一次。 然后我尝试创建从webapp类继承的“空”类。 它也不起作用,因为puppet抱怨没有传递父类参数 我看不到任何可以抽象代码的方法。怎么做 我希望实现: node {

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

其中一个子系统是带有webapplications的tomcat。 我有大约10个网络应用程序。其中每一个都有几乎相同的部署过程。 现在我使用类。10个文件-几乎相同

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

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

我希望实现:

   node {
     class {"webapp::first": param1 = one}
     class {"webapp::second": param1 = two}   
   }
其中第一个和第二个是使用相同配方的应用程序


我知道有定义,但菜谱相当大,即使有可能,我也会发现这个类更具可读性

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

类和定义的类型的创建方式类似,但它们的使用方式非常不同

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


请参见

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

我通过define实现了这一点,因此我有了新的类型。我觉得这不是直觉。我错了吗?有更好的方法吗?这里有一个新链接: