私はシェフ10用のLWRPを書いています。そして、そのリソースが他のレシピで実行されるとき、何かが変更された場合、「updated_by_last_action」としてマークされるべきです。しかし、何も変わっていない場合。updated_by_last_action は false にする必要があります。
例として、シェフのドキュメント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)
すべてのリソースを変数内にラップするよりも、他のものを実行するためのより簡単でクリーンな方法があるかどうか疑問に思っています。LWRP がシェフの実行ごとに更新されているとマークされる前にnew_resource.updated_by_last_action(true)
内部に入れただけの場合、これは最適ではありません。action
end