从生成的列表中删除 Chef 中的包

Removing packages in Chef, from a generated list

我正在尝试在 chef 运行 期间生成一个包列表并将其删除。

我尝试使用 ruby 块来设置 run_state 变量。变量最终为空。我还尝试在 package 中基于 添加惰性求值,但它导致了编译错误。我也研究过将列表放在文件中,但文档说不支持使用包的文件名。

是否有合理的方法从收敛时间变量中删除包列表?

这个怎么样:

ruby_block "somehow get the list of packages to remove" do
  block do
    node.run_state['remove_packages'] = %w( foo bar baz )
  end
end

package "remove the list of packages" do
  package_name lazy { node.run_state['remove_packages'] }
  action :remove
  only_if { node.run_state['remove_packages'] }
end

(使用 chef-apply 13.5.3 测试)