3

私はシェフ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)内部に入れただけの場合、これは最適ではありません。actionend

4

1 に答える 1

5

をインライン リソースにuse_inline_resources委任する LWRP の先頭に追加できます。updated_by_last_action

于 2014-02-11T17:37:08.250 に答える