私はカスタムリソースを持っています(私の料理本の/ resourcesフォルダー内のdsc_class.rbというファイルにあります)。基本的に、これは、DSCクラスリソースをインストールしたり、完全なDSCエンジンを使用したりすることなく、簡単にDSCクラスリソースを呼び出す方法です。シェフのカスタムリソースガード
resource_name :dsc_class
default_action :create
property :file_name, kind_of: String, required: true, name_property: true
action :create do
powershell_script file_name do
cwd ::File.dirname(file_name)
code <<-EOH
gc "#{file_name}" -Raw | iex
$o = New-Object #{file_name.split('/').last.split('.').first}
$o.Set()
EOH
not_if <<-EOH
gc "#{file_name}" -Raw | iex
$o = New-Object #{file_name.split('/').last.split('.').first}
o.Test()
EOH
end
end
は素晴らしい作品 - しかし、アクションは常にリソースガードとPowerShellスクリプトが実行されないときにイベントので、「実行」、私はシェフ・クライアントの実行にログ/出力に「更新Xリソース」を取得します。
カスタムリソースで適切にガードするにはどうすればよいですか?
UPDATE:レシピは
dsc_class "/install/dsc/MyDscResource.ps1"
レシピコードは何ですか? Guardsは他のリソースと同様にcustom_resourceに適用する必要があります。 – Tensibai
本当にあなたに答えるには、[load_current_resource]を実装し、[こちら](https://docs.chef.io/custom_resources.html#converge)のように 'converge_if_changed'を使うべきです。 -if-changed)あなたのPowerShellリソースのガードを取り除く。ドキュメンテーションを回答で引用すると、非生産的なように聞こえます。 – Tensibai
これを行うと、powershell_scriptリソースなしでpowershellスクリプトブロックを呼び出すにはどうすればよいですか? – Jeff