Chef: Ruby 블록에서 Mixlib::ShellOut에 대한 CommandTimout을 어떻게 늘리나요?

Chef: Ruby 블록에서 Mixlib::ShellOut에 대한 CommandTimout을 어떻게 늘리나요?

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에서 더 많은 이점을 얻을 수 있습니다 .scriptexecute

둘 다 동일한 작업을 수행하는 시간 초과 리소스 속성을 지원합니다. execute공식 문서에서 리소스 에 대한 추가 문서를 찾을 수 있습니다 .https://docs.chef.io/resource_execute.html

관련 정보