我一直在为木偶创建几个类(在不同的模块中).两者分别需要maven.所以这两个类都有如下内容:
class { "maven::maven":
version => "3.0.5"
}
Run Code Online (Sandbox Code Playgroud)
(使用来自puppet forge 的https://forge.puppetlabs.com/maestrodev/maven模块)
但是,如果我有一个节点同时拥有我的两个类,则puppet会因为类'maven :: maven'被声明两次而抱怨.我觉得我的每个课程都应该可以自由地宣布它需要的所有东西.如果一个节点有多个类都需要maven,那么我没有看到问题.
所以,我的问题是:该maven模块的作者是否使用了一个类错误,他应该使用一个定义吗?(因为你可以多次使用/调用/任何定义).看来,如果他使用了一个定义,我可以随意使用代码块,所以如果他使用一个类是正确的,为什么呢?
谢谢.
我认为这背后的基本原理最好在John Arundel的Puppet 3初学者指南中解释:
因此,如果您想知道使用哪个,请考虑:
- 您是否需要在同一节点(例如,网站)上拥有多个此实例?如果是这样,请使用定义.
- 这会导致与此节点上的同一事物的其他实例(例如,Web服务器)发生冲突吗?如果是这样,请使用课程.