다음과 같은 Chef 코드가 있다고 가정 해 보겠습니다.
require 'mixlib/shellout'
yum_package 'somepackage'
myvar = Mixlib::ShellOut.new('/bin/somecommand').run_command.stdout.strip
에 /bin/somecommand
의해 설치되어 아직 존재하지 않는 위치 somepackage
입니다. 그 이유는 래서 피 컴파일 타임에 실패하지만 패키지 설치를 성공적으로 제공하는 컨버전스 타임에 분명히 작동합니다 (그렇지 않으면 레시피에 실패했을 것입니다). 패키지가 모두 사전에 함께 컴파일되기 때문에 패키지가 런리스트에서 이전 레시피가 설치된 경우에도 실패합니다. 해당 레시피 또는 런리스트가 설치하는 것을 Chef 레시피에 포함 시키려면 어떻게해야합니까?
이런 종류의 문제는 CFEngine에서 문제가되지 않습니다
—
Gaius
myvar
실제 답변이 없다는 것에 대한 통찰력이 없으면 일반적으로 다른 리소스를 정의 할 필요가 없으면 컴파일 타임에 외부 명령의 코드 평가를 사용하지 않습니다. 간단히 말해,ruby_block 'set myvar' { node.run_state['myvar'] = Mixlib::ShellOut.[...] }
@ Tensibai
—
Gaius
node.run_state
는 내가 찾던 것과 정확히 일치했습니다. 감사합니다. 답변을 드리겠습니다. 수락하겠습니다.
내일까지 기다려야 할 것이다 :) 전화에 정확한 답변을하기에는 너무 어렵다
—
Tensibai