2011-08-30 5 views
2

필자는 꼭두각시를 선언하고 필자는 시스템을 배포하기 위해 꼭두각시를 사용한다. 유지 보수가 가능하도록 매니페스트를 리팩토링하고 있습니다.코드 기반을 줄이기 위해 매개 변수화 된 클래스를 사용하는 방법

하위 시스템 중 하나는 웹 응용 프로그램이 포함 된 tomcat입니다. ~ 10 개의 웹 응용 프로그램이 있습니다. 이들 각각은 거의 동일한 배포 절차를 거칩니다. 지금은 클래스를 사용합니다. 10 개의 파일 - 거의 동일합니다.

필자가 parametrized 클래스를 사용하려고 시도했을 때 꼭두각시를 사용하면 인스턴스를 한 번만 인스턴스화 할 수 있습니다. 그런 다음 webapp 클래스에서 상속받은 '비어있는'클래스를 만들려고했습니다. 꼭두각시가 매개 변수가 부모 클래스를 전달하지 않는다고 불평하기 때문에 잘 작동하지 않습니다.

코드를 추상화 할 수있는 방법이 없습니다. 그것을하는 방법?

I 달성하고자 :

node { 
    class {"webapp::first": param1 = one} 
    class {"webapp::second": param1 = two} 
    } 

제 1 및 제 2의 동일한 레시피를 사용하는 응용 프로그램이다.

나는 정의가 있지만 레시피가 꽤 클 것이고 가능한 경우에도 클래스를 더 쉽게 읽을 수 있다고 생각합니다.

+0

에 의해 사용자 정의 형식의 클래스가 싱글이다 사용을 참조하십시오 그래서 새로운 유형이있다. 나는 그것을 직관적이지 않다는 것을 안다. 내가 잘못? 더 좋은 방법이 있습니까? – user425720

답변

4

클래스에서 매개 변수를 사용할 수 있지만 더 많이 정의 할 수 있습니다. 공식 문서 인용하기

클래스와 정의 된 유형은 비슷하게 생성되지만 완전히 다르게 사용됩니다.

정의 된 유형은 지정된 호스트에서 여러 인스턴스를 가질 재사용 가능한 객체를 정의하는 데 사용되므로 하나의 인스턴스 만 갖는 모든 리소스를 포함 할 수 없습니다. 예를 들어 동일한 정의를 여러 번 사용하면 동일한 파일을 만들 수 없습니다.

http://docs.puppetlabs.com/guides/language_guide.html#resource-collections

+0

새 링크 : http://docs.puppetlabs.com/puppet/latest/reference/lang_defined_types.html – rmmeans

0

시도 내가 함께가 정의하는 것이 달성 한 성격

관련 문제