레시피에서 Chef 환경을 찾는 방법은 무엇입니까?


30

현재 환경이 "dev"인 경우에만 cookbook_file 리소스를 실행하고 싶습니다. 이것을 어떻게 표현할 수 있습니까?

문서는 이것을 제안합니다 :

레시피에서 다음과 같은 코드 블록이 유용합니다.

qa_nodes = search(:node,"chef_environment:QA")      
qa_nodes.each do |qa_node|                          
    # Do useful specific to qa nodes only
end

그러나 그것이 내가 원하는 것인지 확실하지 않습니다-그것이 루프라는 사실이 잘못 보인다.

답변:


46

노드에서 chef_environment Ruby 속성 (일반 Chef 속성이 아님)을 확인하십시오.

if node.chef_environment == "dev"
  # stuff
end

7
특히 chef_environment는 Chef :: Node 객체에서 노드 환경의 값을 반환하는 메서드입니다. 노드 속성이 아니므로 혼동해서는 안됩니다.
jtimberman

감사합니다 @jtimberman. 나는 항상 환경이 노드의 속성이라고 생각했지만 그렇지 않은 것은 합리적입니다.
Tim Potter

3
좋습니다. 원래 질문에 대한 답은을 추가하는 것 only_if { node.chef_environment == "dev" }입니다. 확인했습니다.
Steve Bennett

이 답변을 작동시킬 수 없습니다. 이 문법은 저에게 효과적입니다 : if "#{node.chef_environment}" == "dev"
spuder

2

또 다른 우아한 방법 :

if ['production','development'].include? node.chef_environment
    #do something here
end
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.