30 我只想在当前环境为“ dev”时运行cookbook_file资源。如何表达呢? 该文档建议这样做: 在配方中,这样的代码块将很有用: qa_nodes = search(:node,"chef_environment:QA") qa_nodes.each do |qa_node| # Do useful specific to qa nodes only end 但是我不确定那不是我想要的-这实际上是一个循环似乎是错误的。 chef — 史蒂夫·本内特 source
46 在节点上查看chef_environment Ruby属性(不是常规的Chef属性): if node.chef_environment == "dev" # stuff end — 蒂姆·波特 source 7 具体地说,chef_environment是Chef :: Node对象上的一种方法,该方法返回节点环境的值。它不是节点属性,因此不应混淆。 — jtimberman 谢谢@jtimberman。我一直认为环境是节点的属性,但确实不是。 — 蒂姆·波特 3 很好,这有效。因此,我原始问题的答案是添加only_if { node.chef_environment == "dev" }。已确认。 — 史蒂夫·本内特 无法获得此答案。该语法确实对我if "#{node.chef_environment}" == "dev" — 有用
2 另一种优雅的方式: if ['production','development'].include? node.chef_environment #do something here end — 伊利亚 source