2017-11-22 25 views
2

나는 Vagrant를 사용하여 Puppet을 실험하고 있습니다. 나는 꼭두각시를 처음 보았습니다.Puppet을 설치 한 직후 모듈의 클래스를 사용하는 방법은 무엇입니까?

$dsesterojava = 'dsestero-java' 
exec { 'dsestero-java': 
    command => "puppet module install ${dsesterojava}", 
    unless => "puppet module list | grep ${dsesterojava}", 
    path => ['/usr/bin', '/bin'] 
} 

include java::java_7 

내가 바로 다음 모듈을 가져 오기 위해 노력하고있어 : Can I install puppet modules through puppet manifest?

내 default.pp 같은 것을 포함 나는 방법을 사용하여 매니페스트 내 꼭두각시 모듈을 설치하고있어

은에 제안 그 안에 정의 된 클래스를 사용하십시오.

현재, 내가 얻을 : 나는 주석 경우

Error: Could not find class java::java_7 

이 (가) 줄을 포함하고 다시 실행을. 모듈이 설치됩니다. 그런 다음 주석을 제거하고 프로비저닝을 다시 실행하면 작동합니다.

여기에는 "닭고기와 계란"상황이 있습니다. 모듈을 설치하는 동일한 Puppet 매니페스트에서 모듈을 사용할 수 있습니까?

어떻게 해결해야합니까?

+1

아니요,이 작업을 수행 할 수 없습니다. 카탈로그가 컴파일되면 꼭두각시는 필요한 모든 코드와 데이터를 검색합니다. 'java' 모듈은 카탈로그 어플리케이션이 존재할 때까지 존재하지 않기 때문에, 그것에 의존하는 카탈로그의 컴파일은 실패 할 것입니다. 당신은 절대적으로 "닭고기와 계란"상황을 여기에서 다루고 있습니다. Puppet 코드를 설치하는 데 Puppet 코드를 사용하지 않는 것이 좋습니다. –

+1

또한 제공된 링크는이 방법을 제안하는 것이 아니라 사서 사서 - 꼭두각시를 사용하는 것입니다.그 방법 (또는 후계자 r10k 및 코드 관리자)은이 접근 방법보다 강력하게 권장됩니다. –

+0

감사합니다. @MattSchuchard. 저는 꼭 꼭두각시를 배우고 있습니다 만, 우리는 Puppet Enterprise를 로컬에두고 있습니다. 지금 막 r10k를 사용했음을 알았습니다. –

답변

3

아니요,이 작업을 수행 할 수 없습니다. 카탈로그가 컴파일 될 때, Puppet은 적절한 디렉토리에서 필요한 모든 코드와 데이터를 검색합니다. java 모듈은 카탈로그 응용 프로그램이 있기 전까지는 존재하지 않으므로 응용 프로그램에 따라 카탈로그 컴파일이 실패합니다. 당신은 절대적으로 "닭고기와 계란"상황을 여기에서 다루고 있습니다. Puppet 코드를 설치하는 데 Puppet 코드를 사용하지 않는 것이 좋습니다.

또는 설치하고 인형 모듈을 관리 할 수있는 권장되는 방법은 이러한 솔루션 중 하나를 사용하는 것입니다

이것들은을 사용하는 경우에도 Vagrant 내의 문제를 해결합니다.공급 업체가 Vagrant 인스턴스를 Puppet Master에 등록합니다.

Vagrant 내에 apply 공급 업체를 사용하는 경우 다른 경로로 이동해야합니다. 가장 간단한 해결책은 Puppet 설치 후 module install을 통해 Puppet 모듈을 설치하는 데 shell 공급자를 사용하는 것입니다 (이 경우 Puppet을 구운 상태에서 Vagrant 상자를 사용하는 경우가 아니라면 Puppet을 설치하지 않은 것일 수 있습니다). 또는 모듈이 설치된 호스트와 디렉토리를 공유하거나, librarian-puppet 또는 r10k 보석을 Vagrant 상자에 설치 한 다음 해당 경로를 사용하여 적절한 경로에 설치할 수 있습니다. 나는 요청에 따라 이것들에 대해 더 자세히 설명 할 수있다.

+1

여기에서 언급 할만한 가치가있는 것은 https://github.com/xorpaul/g10k입니다. Go의 번개 빠른 r10k 대체품입니다. 나는 스위치를 만들고 되돌아 보지 않을 것이다. –

+0

@AlexHarvey 내가 개발하는 것을 싫어할만큼 나는 Goss와 Serverspec 사이의 성능 비교를 이미 보았으므로 여기서 비슷한 일이 벌어지고 있다고 생각할 수 있습니다. 꼭두각시가 이것에 대해 알고 있고 그것을 내부화하고 싶다면 적어도 코드 관리자가있는 r10k의 스왑 가능 백엔드로 만드십시오. 둘 중 하나를 선택하면 엔터프라이즈 조직에 제출할 수 있습니다. 어쨌든, 위대한 발견. –

+0

글쎄, 나는 그것에 대해 Puppet Community Slack에서 이야기를 나누었고 몇몇 사람들은 감명을받은 듯했다. 그들은 그것을 내면화해야합니다. –