'converge_by' 是什么意思

What is meant by 'converge_by'

我是 chef 的新手,刚开始使用 machineLWRP 资源。

在大量阅读的过程中,我找到了一个术语 converge_by。这是什么意思?

收敛的意思是“”。您会在代码块周围看到 converge_by,这些代码块将实际执行操作来安排您的系统。

why-run 使用它来识别和跳过实际修改系统状态的操作。

如果您编写自己的纯 ruby 代码来修改 LWRP 中的系统,那么您希望用 converge_by 包装该代码。它做了两件事,即它保护包装代码,以便它在 why-运行 模式期间不会 运行 。并且它会在 运行s.

时自动将资源标记为正在更新

为了使您正在编写的资源是幂等的(而不是在每个 运行 上都被报告为已更新),您通常应该将 converge_by 包装在幂等性检查中。

所以像这样:

use_inline_resources
action :doit do
  unless File.exist("/tmp/doit")
    converge_by("creating /tmp/doit") do
      FileUtils.touch("/tmp/doit")
    end
  end
end

当然,核心 Chef 资源已经为您完成了大部分工作,因此对于该示例,最好写成:

use_inline_resources
action :doit do
  file "/tmp/doit"
end

这表明您的首选应该是使用其他资源编写操作,第二选择通常是编写您自己的 converge_by 代码。