我正在为厨师 10 编写 LWRP。
当该资源在其他配方中运行时,如果某些内容发生了变化,它应该被标记为“updated_by_last_action”。但如果一切都没有改变。 updated_by_last_action 应该是假的。

例如,我有厨师文档 http://docs.opscode.com/lwrp_custom_provider.html#updated-by-last-action 。该示例将资源模板包装在一个变量中以测试它是否已更改,然后设置 updated_by_last_action 状态。
所以我的代码应该是这样的

f = file new_resource.filename do
xxx
end
new_resource.updated_by_last_action(f.updated_by_last_action?)

t = template new_resource.templatename do
xxx
end
new_resource.updated_by_last_action(t.updated_by_last_action?)

m mount new_resource.mountpoint do
xxx
end
new_resource.updated_by_last_action(m.updated_by_last_action?)

但是如果提供者变大并使用大量资源,如模板、文件、目录、挂载等。
所有这些资源是否应该像示例一样被包装在变量中以找出资源是否已更新,以便进一步发送此提供程序已更新的状态。

我想知道是否有一种更简单、更干净的方法来运行 new_resource.updated_by_last_action(true) ,然后将所有资源包装在变量中。因为如果我在 new_resource.updated_by_last_action(true) 之前将 action 放入 end 中,LWRP 会被标记为每次厨师运行都会更新,这不是最佳的。

最佳答案

您可以在 LWRP 的顶部添加 use_inline_resources,它将 updated_by_last_action 委托(delegate)给内联资源。

关于ruby - 厨师食谱 lwrp,使用 new_resource.updated_by_last_action(true) 的最简单方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21703112/

10-10 06:51