사용자 지정 리소스가 있습니다 (요리 책의/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 리소스"를 얻을 때 조치는 항상 이벤트를 "실행".
내 맞춤 리소스에서 어떻게 적절하게 보호 할 수 있습니까?
업데이트 : 조리법은 항상 외부 수준 not_if
또는 only_if
조항에 의존 무엇이든하고 명령/스크립트/실행,
dsc_class "/install/dsc/MyDscResource.ps1"
레시피 코드가 무엇입니까? 경비원은 다른 리소스와 마찬가지로 custom_resource에 적용해야합니다. – Tensibai
정말 답을 얻기 위해 [load_current_resource]를 구현하고 [여기] (https://docs.chef.io/custom_resources.html#converge)와 같이 'converge_if_changed'를 사용해야합니다. - 변경됨) PowerShell 리소스에서 가드를 제거하십시오. 대답에서 문서를 인용하면 비생산적인 것으로 들립니다. – Tensibai
그럴 경우 powershell_script 리소스없이 powershell 스크립트 블록을 호출하려면 어떻게해야합니까? – Jeff