Vagrant 如何使用不同参数多次运行同一厨师配方

Vagrant 如何使用不同参数多次运行同一厨师配方,vagrant,chef-infra,Vagrant,Chef Infra,我有一个方法,在文件系统上安装一个进程,然后是一个运行服务来管理该进程——它最终通知一个命令将唯一配置复制到进程主目录并重新启动进程。这对于一个进程来说效果很好,但当我尝试多次运行它时,即在属性上循环时,我会得到奇怪的副作用,这些副作用似乎与生命周期有关 我得到的一个错误示例 Chef::Exceptions::EnclosingDirectoryDoesNotExist 对于/srv/second进程。但是,这个目录是我在提供程序内的通知块中创建的第一个目录-可能是厨师运行没有被隔离吗?我

我有一个方法,在文件系统上安装一个进程,然后是一个运行服务来管理该进程——它最终通知一个命令将唯一配置复制到进程主目录并重新启动进程。这对于一个进程来说效果很好,但当我尝试多次运行它时,即在属性上循环时,我会得到奇怪的副作用,这些副作用似乎与生命周期有关

我得到的一个错误示例

Chef::Exceptions::EnclosingDirectoryDoesNotExist 
对于/srv/second进程。但是,这个目录是我在提供程序内的通知块中创建的第一个目录-可能是厨师运行没有被隔离吗?我还看到来自第一个数组项的数据泄漏到另一个ie中。第一个进程试图通知r_单元[第二个进程id]

从广义上讲,(如果只有一个过程有效)

我的自定义硬件资源计划提供商

class Provider < Chef::Provider
   def action_enable 
      deploy_revision current_process_id do 

          new_resource.updated_by_last_action(true)
      end
   end
end
类提供程序

是否有一种方法可以隔离每个进程的chef运行?

chef的工作方式最终是一个资源
执行[配置]
,它将基于最后一个

如果使用循环创建资源,请确保所有资源都具有唯一的名称

比如说

execute "configure-#{key}-#{value}"

否则结果将是不可预测的。

Chef的工作方式最终是一个资源
执行[配置]
,该资源将基于最后一个

如果使用循环创建资源,请确保所有资源都具有唯一的名称

比如说

execute "configure-#{key}-#{value}"
否则结果将无法预测。

尝试使用
执行“configure#{some_key}”do
为每个目录获取唯一的执行命令,并在通知中使用相同的语法。如果没有,每个资源都会覆盖上一个资源(简短的解释,这有点复杂)。我使用了
remote\u目录
和通知来重新启动服务,而不是
execute
。您应该实现a或a,甚至可以在烹饪书中重复使用。您始终可以迭代调用其中任何一个。请尝试使用
execute“configure#{some_key}”do
为每个目录获取唯一的execute命令,并在通知中使用相同的语法。如果没有,每个资源都会覆盖上一个资源(简短的解释,这有点复杂)。我使用了
remote\u目录
和通知来重新启动服务,而不是
execute
。您应该实现a或a,甚至可以在烹饪书中重复使用。您始终可以迭代调用其中任何一个。