厨师,关于对同一资源和服务的多次调用

chef, regarding multiple calls to the same resource and about services

例如,假设您有两个模板资源。

两者都通知相同的服务重启,如果它们中的任何一个被更新。

由于他们都以相同的方式执行相同的操作,是否将运行列表中的调用连接成一个调用?

其次,如果我有一个启动服务的调用,但后续资源调用重新启动同一服务,会发生什么情况,我应该如何处理?

这里有两个不同的东西。

1。具有不同操作的重复资源

在这种情况下,Chef 将克隆具有该名称的第一个资源,而不是从头开始创建第二个资源。但是,action 不会被克隆,除非您专门设置它,否则它将成为 default_action。然后将设置第二个资源声明中设置的任何其他属性(覆盖从第一个声明中克隆的内容)。

此新资源将按照声明时的相同顺序放置在资源堆栈中。在这种情况下,这两个操作将按照它们声明的顺序 运行。

2。对同一资源的第二次通知。

在这种情况下,通知被添加到通知堆栈,而不是资源堆栈。添加到通知堆栈的代码将首先查找现有通知。如果找到一个,则不会添加另一个。

我知道以相同的动作向同一个资源发送两个通知会被认为是重复的,不会添加第二个。

我不完全清楚同一资源上的两个不同操作是否被合并,或者被视为不同的通知,但我相信是后者。

我完全不确定当您的通知包含多项操作时会发生什么。 (即,一个通知 :start 服务,另一个通知 [:enable, start ]