Chef 11.10.4 기반 클라이언트를 사용하여 Ubuntu 14.04 시스템의 Chef 레시피에서 데이터베이스 데이터 로드를 수행하려고 합니다. Ruby 블록에서 데이터 로드를 수행하고 있는데 로그에 있는 오류의 관련 부분은 다음과 같습니다.
Mixlib::ShellOut::CommandTimeout
600초 후에 명령 시간이 초과되었습니다.
명령이 허용된 실행 시간을 초과하여 TERM 신호에 의해 종료되었습니다.
[2015-10-06T01:24:00+00:00] 오류: ruby_block[Load Dataset](chef-virtuoso::load line 178)에 오류가 있습니다. Mixlib::ShellOut::CommandTimeout: 600초 후 명령 시간이 초과되었습니다.
shell_out!
루비 블록에서 기본 CommandTimeout을 3600으로 늘리는 방법을 아는 사람이 있습니까 ?
실패한 레시피의 루비 블록은 다음과 같습니다.
::Chef::Recipe.send(:include, Chef::Mixin::ShellOut)
ruby_block "Load Dataset" do
block do
shell_out!(DATA_LOAD_COMMAND)
end
end
답변1
shell_out!
시간 초과를 지정할 수 있는 선택적 두 번째 매개변수 해시를 사용합니다.
shell_out!(DATA_LOAD_COMMAND, timeout: 7200)
즉, 귀하의 예에 따르면 실제로 리소스를 사용해야 하는 것처럼 보이지 않으며 대신 또는 리소스 ruby_block
에서 더 많은 이점을 얻을 수 있습니다 .script
execute
둘 다 동일한 작업을 수행하는 시간 초과 리소스 속성을 지원합니다. execute
공식 문서에서 리소스 에 대한 추가 문서를 찾을 수 있습니다 .https://docs.chef.io/resource_execute.html