たとえば、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