关于多次调用相同资源和服务的主厨

时间:2015-02-09 12:35:28

标签: chef chef-recipe

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

如果要更新其中任何一个,都会通知同一服务重新启动。

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

其次,如果我有一个启动服务的调用,但后续资源调用重启同一服务,会发生什么,我应该如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

这里有两件不同的事情。

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

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

然后,这个新资源将按照声明的顺序放在资源堆栈上。在这种情况下,BOTH操作将按照声明的顺序运行。

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

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

我知道对具有相同操作的同一资源的两个通知将被视为重复,而第二个将不会被添加。

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

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