You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Chef食谱中正确遍历role_multi_module.json的员工JSON数组?

Chef食谱遍历员工数组的正确方法

原代码的问题

  1. 变量名错误:循环中定义的迭代变量是employee,但引用时误写为employees,导致逻辑异常。
  2. 资源属性覆盖:在同一个execute资源内循环赋值command,Chef的声明式模型会保留最后一次赋值的结果,所以最终只会执行第二个员工的echo命令。

正确实现方式

方式一:合并命令一次性执行

将所有员工的echo命令用分号拼接,通过一个execute资源完成所有输出:

execute 'test-multi-module' do  
  command node['role_multi_module']['employees'].map do |employee|
    "echo #{employee['name']} #{employee['email']}"
  end.join('; ')
end

方式二:为每个员工创建独立执行资源

通过循环生成多个execute资源,每个资源对应一个员工,确保每个命令都能执行:

node['role_multi_module']['employees'].each do |employee|
  execute "test-multi-module-#{employee['name']}" do  
    command "echo #{employee['name']} #{employee['email']}"
  end
end

内容的提问来源于stack exchange,提问作者Shyam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:06:51