2013-02-26 2 views
12

주어진 클래스가 존재하는 경우 매니페스트 파일을 체크인하는 방법이 있습니까?클래스가 있는지 확인하십시오.

나는 이런 식으로 뭔가를 할 :

class foo { 
    if exists(Class["foo::${lsbdistcodename}"]) { 
     include foo::${lsbdistcodename} 
    } 
} 

그래서 내가 쉽게 자동으로 포함됩니다 distrubution/버전 특정 클래스를 추가 할 수 있습니다.

답변

12

exist 문 대신 define 문을 사용해야합니다. 다음 코드는 나를 위해 작동 :

class foo { 
    if defined("foo::${lsbdistcodename}") { 
      notify {'defined':}    
      include "foo::${lsbdistcodename}" 
    } 
} 

class foo::precise { 
    notify{'precise':} 
} 

+1

음 감사하지만 클래스가 아직 정의되지 않은 원인이 '작동하지 않습니다 [당신> 2.6.0 꼭두각시 버전을 실행하는 가정]. 그게 내 질문의 핵심이야. 클래스가 존재하는지 확인하고 싶습니다. 게시 한 코드는 실제로 아무 것도하지 않습니다. 클래스가 포함되지 않은 경우 조건은 거짓이며 포함 된 경우 포함은 다시 포함되지 않습니다 ... –

+0

사실이 아닙니다.이 문제 참조 - http://projects.puppetlabs.com/issues/3490 – LiorH

+0

나를 위해 작동하지 않습니다. 나는 꼭두각시 2.7.18 실행 해요 : 정의 된 경우 '' 을 common' 포함하면서, '정의 된 경우 (클래스 [ '일반적인']) {통지 ('예')}' 의지 출력 아무것도 ( 'yes' –

관련 문제