鉴于这个简化的Puppet示例,很明显,my_file
的任何更改都会因my_service
链接运算符而触发~>
刷新:
package { 'my_package': }
->
file { 'my_file': }
~>
service { 'my_service': }
更改为my_package
是否也会导致my_service
刷新? (也就是说,状态变化是否会通过非通知->
连锁运营商传播?)
我知道如果所有操作员都通知操作员,刷新事件将通过链传播,但文档并不清楚它是如何在混合链中工作的。
答案 0 :(得分:3)
通知从不传播通过其他资源,即使它们位于设置为通知的资源链中。
当资源被"更改"时,它会通知任何订阅了自己的更改的资源。这些资源调用了refresh
方法,可以执行该类型所需的任何操作。之后没有其他事情发生。
如果通知资源已更改本身,则它还会通知任何订阅了 it 更改的人。这不会传播通知,它实际上正在传播更改通过清单。
例如,如果/tmp/markerfile
已经存在,则此清单将不会应用exec资源:
notify { 'test': }
~>
file { '/tmp/markerfile':
ensure => present
}
~>
exec { '/bin/date':
refreshonly => true
}