Chef infra 何谓';通过'收敛;

Chef infra 何谓';通过'收敛;,chef-infra,Chef Infra,我是chef的新手,刚刚开始使用machine和LWRP资源 在大量阅读时,我发现一个术语converge\u by。它是什么意思?收敛的意思是“收敛”。您将看到converge\u by围绕实际执行操作以安排系统的代码块 它用于识别和跳过实际修改系统状态的操作。如果您编写自己的纯ruby代码,在LWRP中修改系统,那么您希望使用converge\u by包装该代码。它做了两件事,那就是保护包装好的代码,这样它就不会在为什么运行模式下运行。它会在资源运行时自动将其标记为正在更新 为了使您正在编写

我是
chef
的新手,刚刚开始使用
machine
LWRP
资源

在大量阅读时,我发现一个术语
converge\u by
。它是什么意思?

收敛的意思是“收敛”。您将看到
converge\u by
围绕实际执行操作以安排系统的代码块


它用于识别和跳过实际修改系统状态的操作。

如果您编写自己的纯ruby代码,在LWRP中修改系统,那么您希望使用converge\u by包装该代码。它做了两件事,那就是保护包装好的代码,这样它就不会在为什么运行模式下运行。它会在资源运行时自动将其标记为正在更新

为了使您正在编写的资源是幂等的(并且不会在每次运行时都报告为已更新),您通常应该在检查幂等性时将converge_包装起来

比如:

use_inline_resources
action :doit do
  unless File.exist("/tmp/doit")
    converge_by("creating /tmp/doit") do
      FileUtils.touch("/tmp/doit")
    end
  end
end
当然,核心厨师资源已经为您完成了大部分这方面的工作,因此,对于该示例,最好编写如下:

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

这表明您的第一个选择应该是使用其他资源编写操作,第二个选择通常是编写自己的converge\u by代码。

我正在搜索文档,但找不到术语“converge\u by”。“机器”资源是chef provisioning的一部分,该功能有自己的网页:。我认为你需要更具体地处理你的问题。