在puppet 4中,如果在附近声明的许多其他资源(可能是各种资源类型)之一发生变化,如何方便地触发某些资源的刷新?
E.g。
# these resources
resource_type1 {...}
resource_type2 {...}
resource_type2 {...}
resource_type2 {...}
resource_type3 {...}
# should refresh this when changed
service {...}
我知道我可以列出subscribe
中的每个资源,并在其中使用资源收集器;但是我想要一些更适合长期懒惰的东西。
我考虑使用with块,但这不起作用:
with() || {
# these resources
resource_type1 {...}
resource_type2 {...}
resource_type2 {...}
resource_type2 {...}
resource_type3 {...}
}
~>
# will refresh this when any of them have changed
service {...}
只有with块中的最后一个资源才会触发刷新。
您可以使用以下方式自行测试:
with() || {
file { '/etc/test':
content => 'Change this and notice it does not trigger',
}
file { '/etc/test2':
content => 'foo',
}
}
~>
exec {'/bin/echo triggered':
refreshonly => true,
}
答案 0 :(得分:0)
在Puppet 4中,虽然仍然导致了大量的锅炉板,但一种强有力的方法是使用一个类对资源进行分组:
class config {
resource_type1 {...}
resource_type2 {...}
resource_type2 {...}
resource_type2 {...}
resource_type3 {...}
}
class { 'config': }
~>
service {...}
如果是某个课程的一部分,您还需要添加contain
(here's why),如下所示:
class foo {
class { 'foo::config': }
~>
service {...}
contain 'foo::config'
}