2017-01-23 8 views
1

퍼핏 엔터프라이즈를 사용 중입니다.다른 노드의 정의에 정의 된 퍼핏 설치 소프트웨어

# cat site.pp 
node 'box A' { 
    include iis 
} 

지금 직면하고있는 문제가있는 경우이다 : 아래 그림과 같이

iis.pp 
rds.pp 
site.pp 

내가 site.pp에서 노드 정의가 :

# puppet master --version 
4.8.1 

은 (/etc/puppetlabs/code/environments/production/manifests는) 다음 디렉토리를 포함 매니페스트 아래 그림과 같이 공백 정의를 작성하여 새 노드 (예 : 상자 B)를 만들고 site.pp에 추가합니다. 여전히은 실제로 다른 노드 (이 경우 '상자 A') 정의의 일부인 소프트웨어를 설치합니다.

node 'box B' { } 

위의 두 노드 정의 외부에 정의 된 site.pp에 include 문이 없습니다.

왜 이런 일이 발생합니까?

UPDATE :

# cat iis.pp 
$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET'] 

windowsfeature { $iis_features: 
    ensure => present, 
} 
+0

정확하게 'iis.pp'에 무엇이 있습니까? –

+1

Puppet은'/ etc/puppetlabs/code/environments/production/manifests'에있는 모든 것을 사용하거나 기본 manifest로 그 곳에서 첫 번째 목록을 사용할 수 있습니다. 어느 쪽이든, 거기에'site.pp' 이외의 것을 갖는 것은 아주 드문 일입니다. 다른 매니 페스트를 이동하여 문제가 해결되는지 확인합니다. –

+0

@DominicCleal : 내용이 iis.pp 인 게시물을 업데이트 함 – Technext

답변

2

이 인형 4부터 최상위 환경의 모든 파일이 manifests/ 디렉토리가 자동으로로드됩니다. 대개 이것은 다른 노드 정의 또는 클래스를 정의하고 import 지시문 (Puppet 2 및 3에서 사용됨)을 사용하지 않고 모두로드 할 수 있도록하기위한 것입니다.

귀하의 경우 모든 노드에서 iis.pp, rds.ppsite.pp이 파싱되어 사용됩니다. (Directories: The main manifest(s)이 구성되는 방법에 대한 더 많은 정보를 가지고있다.)

iis 클래스로 그룹에 IIS 구성합니다 (windowsfeature 자원을) Puppet classes를 사용하여, 그것을 해결하기 위해 - 다음 include iis는 "상자 A를이 구성을 사용합니다 ". 이상적으로

class iis { 
    $iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET'] 

    windowsfeature { $iis_features: 
    ensure => present, 
    } 
} 

표준 모듈 위치에있을 /etc/puppetlabs/code/environments/production/modules/iis/manifests/init.ppiis.pp 이동 :

변경 iis.pp 클래스를 정의합니다. Puppet은 include iis을 사용할 때까지 iis.pp를 읽을 필요가 없으므로 성능이 향상됩니다.

+0

우연히도 필자는 앞서 언급 한 것과 유사한 링크 (Matt의 코멘트를 읽은 후)를 사용하고 있었지만, 내 사이트는 이전 버전 (https://docs.puppet.com/puppet/3.8/dirs_manifest.html) 해제. :) 성능과 관련된 마지막 점을 주셔서 감사합니다. 파일이 여러 개인 경우 효과가 상당 할 수 있습니다. "일반적으로 다른 노드 정의 또는 클래스를 정의 할 수 있습니다 ..."라고 언급했을 때 성능을 제쳐두고 유지하는 것이 좋습니다. – Technext

+1

@ 기술 전체가 아닙니다. 클래스는 매니페스트 디렉토리 대신 모듈에 있어야합니다. 동일한 모듈에 관련 항목 (템플릿, 파일, 함수, FACT 플러그인 등)을 정리하고 정리하는 것이 더 쉽습니다. 노드 정의를 사용하면 노드 정의가 있어야하지만 기본 노드 정의 만 있으므로 Hiera (예 : hiera_include)를 사용하는 것이 좋습니다. –