배경 : 우리 시스템은 Chef 로그를 볼 수 있고 Chef 서버 콘솔이나 다른 sysadmin 권한에 액세스 할 수 없도록 설정되었습니다. 따라서 나는 무엇인가가 실패했는지 또는 왜 실패했는지보고 싶다면 지역적으로 기록 할 필요가있다.가변 조건을 기반으로 요리사가 운영하는 설치 블록
나는 "당신이 그것을 올바르게 설치하기 위해 군중이나 주방장을 신뢰하지 않는다면 ..."라고 묻는 말을들을 수 있습니다. 제 대답은 당신이 옳은 동안 나는 가끔 예외적으로 다루기를 원합니다.
내 목표는 pkg을 설치하고 다음 pkg으로 설치하는 것보다 pkg가 올바르게 설치되었는지 확인하는 것입니다. 질문에에
:
나는 다음과 같은 코드를 사용하여 첫 번째 패키지에 의해 생성 된 디렉토리의 존재 여부를 확인하는 변수를 설정하려는 :
mycond = ::File.directory?('/opt/MyPkg/conf')
Chef::Log.fatal("MyPkg package not installed ? conf dir is missing") unless mycond
다음 단계를 수령인은 다음 설치 블록을 실행하여 변수가 설정되었는지 확인합니다.
yum_package 'OtherPkg' do
action :install
only_if { mycond }
end
내 질문은 only_if
길을 내가 mycond
변수를 설정하고에 문제가 있다면 궁금 해서요, 실패 때문에입니까? perhapes {} 괄호는 코드 어딘가에 필요합니까?
총 요리사 초보자 그래서 구체적인 답변을하십시오.
감사합니다. 아래
전체 코드 :
yum_package 'MyPkg' do
flush_cache [ :before ]
action :install
end
mycond = ::File.directory?('/opt/MyPkg/conf')
Chef::Log.fatal("MyPkg package not installed ? conf dir is missing") unless mycond
yum_package 'OtherPkg' do
action :install
only_if { mycond }
end
어떻게하면 로컬 로그에도 쓸 수 있습니까? – eramm
아마도 로그 리소스를 사용할 것입니다. – coderanger