例如,假设您有两个模板资源。
如果要更新其中任何一个,都会通知同一服务重新启动。
由于他们都以相同的方式执行相同的操作,运行列表中的调用是否会连接成一个调用?
其次,如果我有一个启动服务的调用,但后续资源调用重启同一服务,会发生什么,我应该如何处理它?</ p>
答案 0 :(得分:1)
这里有两件不同的事情。
在这种情况下,chef将使用该名称克隆第一个资源,而不是从头开始创建第二个资源。但是,action
不会被克隆,除非您专门设置,否则它将是default_action
。然后将设置第二个资源声明中设置的任何其他属性(覆盖从第一个声明克隆的内容)。
然后,这个新资源将按照声明的顺序放在资源堆栈上。在这种情况下,BOTH操作将按照声明的顺序运行。
在这种情况下,通知会添加到通知堆栈,而不是资源堆栈。要添加到通知堆栈的代码将首先查找现有通知。如果它找到一个,那么它将不会添加另一个。
我知道对具有相同操作的同一资源的两个通知将被视为重复,而第二个将不会被添加。
我不完全清楚同一资源上的两个不同操作是否合并,或者被视为不同的通知,但我相信它是后者。
我完全不确定当您的通知包含多项操作时会发生什么。 (即,一个通知:start
服务,另一个通知[:enable, start ]