2014-05-13 2 views
0

Linux 6 컴퓨터에서 퍼핏 3.5.1을 사용하고 있습니다.모듈 내부의 모듈을 참조하는 퍼핏

서브 모듈 "B"를 포함하는 로컬 모듈 "A"가 있습니다. 하위 모듈 "B"는 "/ etc/puppet/modules/A/modules/B"에 있습니다.

class A::one (
... 
    class { 'B': 
     val1 => 'abc', 
     val2 => 'abc', 
    } 
... 
) 

B는 다음 참조되지 않은 경우 (/etc/puppet/modules/A/manifest/init.pp 파일)

I는 서브 모듈 내 모듈 "B", "A"클래스 참조 그 밖의 모든 것들. 나는 꼭두각시 마스터와 꼭두각시 에이전트를 시작하면 , 나는 에이전트에 다음과 같은 오류가 발생합니다 :

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class B 

무엇 내가 놓친?

일부 게시물에는 꼭두각시 에이전트 노드에 '포함 B'를 추가하는 해상도가 있다고 보았습니다. 그것이 해결책이라면, 이것은 다른 모듈 내부의 모듈이기 때문에 어떻게 참조 할 수 있습니까? 1

편집 I "는은/etc/인형/모듈/A/모듈"을 "은/etc/인형/모듈"에서, 메인 모듈 폴더에 서브 모듈 "B"를 옮겼다.

Error: Duplicate declaration: Class[B] is already declared; cannot redeclare at /etc/puppet/modules/A/manifest/init.pp 

답변

1

는 모듈의 modules/ 서브 트리를 갖는 것은 지금까지 자동 로더에 관한 한 유효한 구조입니다 : 그것은 오류를했다. 서브 모듈에 대한 의미론은 없습니다.

이 특수한 사례가 절실히 필요하다면 modulepath 구성 설정에 을 추가해야합니다.

코드 아키텍처가 약간 부정적인 것으로 보일 수 있으므로 새로운 질문을하고 실제로 해결하려고하는 내용을 설명 할 수 있습니다.

관련 문제