关系元参数与链接箭头之间有什么区别?
What is the difference between Relationship Metaparameters vs Chaining Arrows?
Puppet Language Relationships 页面有关系元参数(before
、require
、notify
、subscribe
)和链接箭头(->
、 ~>
).
看来这些也能达到同样的效果。使用他们给出的示例,您可以使用 before
或 require
来指示顺序,或者您似乎也可以声明 Package['openssh-server'] -> File['/etc/ssh/sshd_config']
.
这些选项有什么区别?
什么被认为是 "best practice" 订购?
此外,什么时候使用 before
(或 notify
)与 require
(或 subscribe
)比较好?这重要还是只是偏好问题?
same ordering relationship
package { 'openssh-server':
ensure => present,
before => File['/etc/ssh/sshd_config'],
}
file { '/etc/ssh/sshd_config':
ensure => file,
mode => 600,
source => 'puppet:///modules/sshd/sshd_config',
require => Package['openssh-server'],
}
same notification relationship:
file { '/etc/ssh/sshd_config':
ensure => file,
mode => 600,
source => 'puppet:///modules/sshd/sshd_config',
notify => Service['sshd'],
}
service { 'sshd':
ensure => running,
enable => true,
subscribe => File['/etc/ssh/sshd_config'],
}
是的,关系元参数和链接运算符是实现相同目的的不同方法。元参数在 Puppet 中存在的时间更长。
链接运算符的特点是它们可以在资源声明范围之外使用,而无需覆盖资源参数(并非总是可以覆盖)。它们与资源收集器一起使用时特别有用,例如:
Group<||> -> User<||>
元参数以参数来区分。除其他事项外,这意味着它们的值可以从资源默认值和/或变量或 class 参数中提取。
在许多情况下,对于链接箭头还是元参数,两者都可行,目前还没有达成共识的最佳实践。当这种关系似乎是一种或两种资源的本质所固有的时候,我个人倾向于使用元参数,这在很多时候都是如此。
关于before
/notify
vs. require
/subscribe
,你会发现很多情况下,把关系定义在一个上更自然一边比另一边。当仅有条件地声明其中一个相关资源时尤其如此:您需要在有条件的一方声明关系,以免无条件的一方有时有未解决的关系。当许多资源必须与一个资源相关时也是如此:即使您知道所涉及的所有资源,通常更容易在 "many" 端声明关系。
然而,在很多情况下,是的,这是一个偏好问题。
Puppet Language Relationships 页面有关系元参数(before
、require
、notify
、subscribe
)和链接箭头(->
、 ~>
).
看来这些也能达到同样的效果。使用他们给出的示例,您可以使用 before
或 require
来指示顺序,或者您似乎也可以声明 Package['openssh-server'] -> File['/etc/ssh/sshd_config']
.
这些选项有什么区别?
什么被认为是 "best practice" 订购?
此外,什么时候使用 before
(或 notify
)与 require
(或 subscribe
)比较好?这重要还是只是偏好问题?
same ordering relationship
package { 'openssh-server':
ensure => present,
before => File['/etc/ssh/sshd_config'],
}
file { '/etc/ssh/sshd_config':
ensure => file,
mode => 600,
source => 'puppet:///modules/sshd/sshd_config',
require => Package['openssh-server'],
}
same notification relationship:
file { '/etc/ssh/sshd_config':
ensure => file,
mode => 600,
source => 'puppet:///modules/sshd/sshd_config',
notify => Service['sshd'],
}
service { 'sshd':
ensure => running,
enable => true,
subscribe => File['/etc/ssh/sshd_config'],
}
是的,关系元参数和链接运算符是实现相同目的的不同方法。元参数在 Puppet 中存在的时间更长。
链接运算符的特点是它们可以在资源声明范围之外使用,而无需覆盖资源参数(并非总是可以覆盖)。它们与资源收集器一起使用时特别有用,例如:
Group<||> -> User<||>
元参数以参数来区分。除其他事项外,这意味着它们的值可以从资源默认值和/或变量或 class 参数中提取。
在许多情况下,对于链接箭头还是元参数,两者都可行,目前还没有达成共识的最佳实践。当这种关系似乎是一种或两种资源的本质所固有的时候,我个人倾向于使用元参数,这在很多时候都是如此。
关于before
/notify
vs. require
/subscribe
,你会发现很多情况下,把关系定义在一个上更自然一边比另一边。当仅有条件地声明其中一个相关资源时尤其如此:您需要在有条件的一方声明关系,以免无条件的一方有时有未解决的关系。当许多资源必须与一个资源相关时也是如此:即使您知道所涉及的所有资源,通常更容易在 "many" 端声明关系。
然而,在很多情况下,是的,这是一个偏好问题。