如何创建仅在 Puppet 中刷新的 class
How to create a class that only refresh in Puppet
是否可以创建一个仅在收到通知事件时才执行的 class?我想做 "exec" 对 "refreshonly" 所做的事情,我找不到如何做的。具体来说,我想做的是:
我有一个存档资源,它下载一个文件,具有 "create" 属性:
archive { "/opt/service/service-${version}.jar":
source => "http://[ARTIFACT_URL]/service-${version}.jar",
creates => "/opt/service/service-${version}.jar",
cleanup => false,
}
我想这样做:
Archive["/opt/service/service-${version}.jar"] ~> Some_custom_class['some_title']
但是"Some_custom_class"只能在存档下载文件时执行,即触发通知事件时。
谢谢!
It is possible to create a class that only executes when receives a notification event?
没有。因此,最好避免将 Exec
资源概念化为您所描述的行为。 节点目录中声明的每个资源都与每个运行上的节点同步,除非根据已建立的关系,资源故障可能会阻止其他资源同步。成功同步并从另一个资源接收事件的资源也会被刷新,但对于许多资源类型,刷新操作是空操作。
没有例外,或者至少以这种方式概念化 Puppet 的行为是舒适和一致的。为此,我们可以协调 refreshonly => true
对 Exec 资源的影响,方法是将其解释为无条件地声明该资源最初是同步的,而不是根据其 [=12 来确定它是否最初是同步的=]、unless
和 creates
参数(默认为 "no")。由于这样的 Exec
在 运行 开始时已经同步,因此同步它不涉及采取任何操作。 类没有类似的功能。
至于你想要实现的目标,我建议将属于 class 的 Exec
资源声明为仅刷新(通过将其声明为资源默认值可以方便地实现) ) 并允许其他资源同步。
是否可以创建一个仅在收到通知事件时才执行的 class?我想做 "exec" 对 "refreshonly" 所做的事情,我找不到如何做的。具体来说,我想做的是:
我有一个存档资源,它下载一个文件,具有 "create" 属性:
archive { "/opt/service/service-${version}.jar":
source => "http://[ARTIFACT_URL]/service-${version}.jar",
creates => "/opt/service/service-${version}.jar",
cleanup => false,
}
我想这样做:
Archive["/opt/service/service-${version}.jar"] ~> Some_custom_class['some_title']
但是"Some_custom_class"只能在存档下载文件时执行,即触发通知事件时。
谢谢!
It is possible to create a class that only executes when receives a notification event?
没有。因此,最好避免将 Exec
资源概念化为您所描述的行为。 节点目录中声明的每个资源都与每个运行上的节点同步,除非根据已建立的关系,资源故障可能会阻止其他资源同步。成功同步并从另一个资源接收事件的资源也会被刷新,但对于许多资源类型,刷新操作是空操作。
没有例外,或者至少以这种方式概念化 Puppet 的行为是舒适和一致的。为此,我们可以协调 refreshonly => true
对 Exec 资源的影响,方法是将其解释为无条件地声明该资源最初是同步的,而不是根据其 [=12 来确定它是否最初是同步的=]、unless
和 creates
参数(默认为 "no")。由于这样的 Exec
在 运行 开始时已经同步,因此同步它不涉及采取任何操作。 类没有类似的功能。
至于你想要实现的目标,我建议将属于 class 的 Exec
资源声明为仅刷新(通过将其声明为资源默认值可以方便地实现) ) 并允许其他资源同步。