2011-11-17 6 views
1

내가 패키지의 사용자 지정 공급자를 만들려고하고 있어요하지만 난꼭두각시

ERR을 받고 계속 몇 가지 이유에 대한 내 모듈을 인식하지 /usr/local/src/ops/services/puppet/modules/test/manifests/init.pp:5

에서 piprs은 '나는 클라이언트와 서버 모두에서 puppet.conf에 pluginsync = true를 추가했습니다. 다음 rb 파일을/test/lib/puppet/provider/package/piprs.rb 모듈에 만들었습니다. 나는 기본적으로 puppet.conf에서 패키지 자원 유형

#require 'puppet/provider/package' 

Puppet::Type.type(:package).provide(:piprs, 
     :parent => ::Puppet::Provider::Package) do 

     commands : pip => "/usr/local/bin/pip" 

     desc "Python packages via `pip`." 

     def create 
      pip "freeze" 
     end 

     def destroy 
     end 

     def exists? 
     end 

    end 

에 대한 사용자 지정 공급자를 만들려고하고, 다음과 같은 소스가 나는 그것이 무엇인지 확실하지 않다

 pluginsource = puppet://puppet/plugins 

속성이 있습니다. 더 자세한 내용이 필요하면 의견을 게시하십시오.

답변

2

첫 번째 사항 - 이미 핵심 파이썬 핍 공급자가 있다는 것을 알고 있습니까? 우선 들어 다음에 이동할 수 있습니다 ...

- - 그게 당신이 원하는 것을하지 않으면

https://github.com/puppetlabs/puppet/blob/master/lib/puppet/provider/package/pip.rb

퍼핏 마스터없이 모듈을 시도 -이 어쨌든 개발을위한 더 나은 될 것입니다. 그런 다음

export RUBYLIB=<path_to_module>/lib 

.PP 파일에 작은 테스트를 작성하려고 :

package { "mypackage": provider => "piprs" } 

을 그리고 로컬로 실행

puppet apply mytest.pp 
당신은 라이브러리 경로를 찾을 수 있는지 루비를 확인해야합니다

이것은 공급자의 코드 버그 대 플러그인 동기화 문제를 배제합니다.

콜론과 명령 사이에 공백이 있음을 알았습니다. 문제가되지 않습니까?

commands : pip => "/usr/local/bin/pip" 

puppetmaster 없이도 작동 할 수 있다면 문제는 동기화와 관련이 있습니다.

이 잘못 될 수있는 몇 가지가 있습니다 - 파일이 클라이언트에서 제대로으로 동기되어 있는지 확인 :

ls /var/lib/puppet/lib/puppet/provider/package 

당신은 거기에 piprs.rb 파일을 볼 수 있습니다. 이 경우, 당신은 당신의 LIBDIR가 올바르게 설정되어 있는지 확인해야 할 수도 있습니다

puppet --configprint libdir 

이 가리켜 야는/var/lib 디렉토리/인형/lib에 대부분의 경우에.

+0

고맙습니다. 나는 그것을 테스트하고 당신을 업데이트 할 것입니다. 그러나 그것은 매우 설명력이 있습니다. 나는 그것이 문제를 극복하는데 도움이 될 것이라는 희망을 가지고 있습니다 !!! 그리고 나는 이미 팝 제공자가 있음을 깨닫습니다. 나는 배우기 위해 새로운 것을 쓰려고합니다. –

관련 문제