如何方便地订阅多个最近申报的资源?

时间:2015-08-31 18:29:33

标签: puppet

在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,
}

1 个答案:

答案 0 :(得分:0)

在Puppet 4中,虽然仍然导致了大量的锅炉板,但一种强有力的方法是使用一个类对资源进行分组:

class config {
  resource_type1 {...}
  resource_type2 {...}
  resource_type2 {...}
  resource_type2 {...}
  resource_type3 {...}
}

class { 'config': }
~>
service {...}

如果是某个课程的一部分,您还需要添加containhere's why),如下所示:

class foo {
  class { 'foo::config': }
  ~>
  service {...}

  contain 'foo::config'
}