일부 Windows 기능을 활성화하고 WindowsRebootHandler을 사용하여 컴퓨터를 재부팅하기위한 요리 책을 만들었습니다. 아래 코드에서 볼 수 있듯이 ruby_block을 사용하여 후속 실행에서 동일한 작업을 수행하지 않습니다.knife 명령을 사용하여 노드 속성을 삭제할 수 없습니다.
windows_batch 'Enable_MS_Feature' do
code <<-EOH
#My script
EOH
notifies :create, "ruby_block[WindowsFeature_Install]", :immediately
notifies :request, 'windows_reboot[60]'
not_if { node.attribute?("WindowsFeature_Installed") }
end
ruby_block "WindowsFeature_Install" do
block do
node.set['WindowsFeature_Installed'] = true
node.save
end
action :nothing
end
테스트 목적으로이 작업을 다시 수행하려면 WindowsFeature_Installed
속성을 삭제해야합니다. 그래서 아래 명령을 사용했습니다.
knife exec -E "nodes.transform(:all) {|n| n.delete('WindowsFeature_Installed');n.save() }"
위의 명령은 노드 속성을 삭제하지 않습니다. knife 명령을 사용하여 동일한 속성을 검색하면 모든 노드가 나열됩니다.
knife search node "WindowsFeature_Installed:true"
더 디버깅하려면 명령의 자세한 출력을 활성화하고 chef-server의 모든 HTTP 응답이 OK였습니다.
또한 chef-server 로그에서 오류 세부 사항을 확인하려고했습니다. 그러나 Chef-Server 패키지와 관련된 많은 프로세스 로그가 존재하기 때문에 문제를 확인할 수 없었습니다.
따라서이 속성을 제거하여 래서 피 작업을 다시 수행하려면 어떻게합니까? 또는 요리사 - 서버 로그, 노드 속성 삭제 세부 정보가 기록됩니까? 모든 포인터가 도움이 될 것입니다.
n.delete ('WindowsFeature_Installed') 대신'n.set [ 'WindowsFeature_Installed'] = nil'을 사용해보십시오. –
@Draco 답장을 보내 주셔서 감사합니다. 나는 이미'n.set'을 시도해 왔고 레서피 액션을 다시 수행 할 수있었습니다. 'knife exec -E "nodes.transform (: all) {| n | n.set [ 'WindowsFeature_Installed'] = false; n.save}"'. 그러나, 왜'n.delete'가 실패하고 있는지 궁금합니다. – vareda