Relationship Metaparameters与Chaining Arrows有什么区别?

时间:2015-04-09 13:56:30

标签: puppet

Puppet Language Relationships页面包含关系元参数(beforerequirenotifysubscribe)和链接箭头(->,{{ 1}})。

似乎这些可以用于同样的效果。使用他们提供的示例,您可以使用~>before来指示订单,或者您似乎也可以声明require

这些选项之间的区别是什么?

考虑什么"最佳实践"订购?

此外,何时使用Package['openssh-server'] -> File['/etc/ssh/sshd_config'](或before)vs notify(或require)更好?是重要还是只是偏好?

subscribe

1 个答案:

答案 0 :(得分:3)

是的,关系元参数和链接运算符是实现相同目的的不同方法。元参数在Puppet中的时间更长。

链接运算符的特点是它们可以在资源声明范围之外使用而不会覆盖资源参数(覆盖并不总是可行)。它们与资源收集器一起使用时非常有用,例如:

Group<||> -> User<||>

元参数通过参数来区分。除此之外,这意味着它们的值可以从资源默认值和/或变量或类参数中提取。

对于两者都可行的许多情况,是否更喜欢链接箭头或元参数没有达成共识的最佳实践。我个人倾向于偏好元参数,因为这种关系似乎是一种或两种资源的本质所固有的,这在很多时候都是如此。

关于before / notifyrequire / subscribe,您会发现在很多情况下,定义一方的关系比一方更自然在另一。当有条件地声明其中一个相关资源时尤其如此:那么您需要在条件方面声明关系,以免无条件方有时具有未解决的关系。当许多资源必须与一个资源相关时也是如此:即使您知道所涉及的所有资源,通常也更容易在&#34;许多资源上声明关系。侧。

然而,在许多情况下,是的,这是一个偏好的问题。