在Puppet清单中使用`before`或`require`?

时间:2014-04-06 13:50:57

标签: puppet

好的,我刚刚开始学习Puppet并完成文档。从我看到的:

  • requirebefore
  • 相同
  • subscribenotify
  • 相同

显然,这些是在依赖关系的相反方面添加的,但是你明白我的观点。

从代码可读性和可维护性方面来看,使用一对(每对)比另一对更好吗?我是否应该同时使用两者以获得最大的清晰度,否则会使维护变得麻烦?想法?

1 个答案:

答案 0 :(得分:4)

两种变体都同样合适。但它们有一些具体的用途。

  • 让意图更清晰

E.g。

exec { "initialize-footool": require => Package["footool"] }
file { "/etc/default/footool": before => Exec["initialize-footool"] }

阅读更像英语而不仅仅是exec上的要求。

  • 与其他不了解相关资源的资源建立关系

E.g。

include apache
exec { "apache2ctl graceful": require => Package[apache] } # package inside class apache

后者虽然很糟糕。我发现最明确的好处之一就在于这些元参数'能够以整个班级为目标。

include apache
exec { "apache2ctl graceful": require => Class["apache"] }
file { "/etc/default/apache2": before => Class["apache"] }

有意将自己限制在require而不是永远使用before 的人可以采用这种语法

class { "apache": require => File["/etc/default/apache2"] }

社区不鼓励类{}样式声明,因为

  • 它不能用于多次声明同一个类
  • 即使与同一类的include语句混合使用,也会产生解析订单问题