たとえば、3 つのパラメーターを使用して軽量リソースを定義できるようにしたいと考えています。そのうちの 2 つは基本/基本パラメーターであり、3 つ目はこれら 2 つの組み合わせです。また、3 番目のパラメーターのカスタマイズの可能性を提供したいと思います。例えば:
属性に対して上記の動作を実現するために次のコードを変更する方法full_name:
リソース定義:
actions :install
attribute :name, :kind_of => String, :name_attribute => true
attribute :version, :kind_of => String
attribute :full_name, :kind_of => String
プロバイダーの定義:
action :install do
Chef::Log.info "#{new_resource.full_name}"
end
さまざまなリソース ディレクティブに対してさまざまな出力を表示したいと思います。たとえば、次のようになります。
resource "abc" do
version "1.0.1"
end
になりますがabc-1.0.1、次のようになります。
resource "def" do
version "0.1.3"
full_name "completely_irrelevant"
end
になりcompletely_irrelevantます。
リソース定義でこの動作を定義する可能性はありますか (おそらくdefaultパラメーターを介して)、またはプロバイダー定義でのみ実行できますか? 2番目が真の場合、計算された値をnew_resourceオブジェクトのfull_name属性に保存できますか(クラスはfull_name=メソッド定義を欠いているようです)、それともローカル変数に保存する必要がありますか?
アップデート
Draco のヒントのおかげで、リソース ファイルにアクセサ メソッドを作成し、full_name要求されたときにその場で値を計算できることに気付きました。私はよりクリーンなソリューションを好みますが、実際の実装で計算するよりもはるかに優れています。
シェフのバージョン シェフ: 10.16.4