2014-02-09 7 views
0

꼭두각시를 사용하여 내 응용 프로그램을 배포 할 노드 1이 있습니다. 나는이 응용 프로그램이인형 - 꼭두각시 클래스 적용

이의 그 어떤 방법이 있나요 같은

LDAP_SERVER = 노드 2

mq_server = 노드 3으로 사용하려고하는 모든 서버 세부 사항을 알리는 hiera 파일 (node1_application.yaml를) 만들었습니다 node.pp, 노드 1에 적용 할 클래스를 node1 정보 만 제공합니다. 그런 다음이 클래스는 내 hiera 파일을 읽고 ldap 서버가 노드 2에 있어야하므로 ldap 모듈이 노드 2에 적용되어야합니다.

내 hiera 파일을 사용하여 어떤 노드가 어떤 노드에 적용되어야 하는지를 동적으로 결정해야합니다. 할 수 있습니까?

저는 꼭두각시 기업, 히 에라, 팩터, puppetdb 및 mcollective를 사용하고 있습니다.

답변

1

예, 가능합니다.

node default{ 
    if hiera("useldap") == 'true' { 
     include ldap 
    } 
} 

useldap = true

+0

이것은'node2_application.yaml'에서 op가 원하는대로 usierdap에 대해 hierdata 키/값을 설정해야하며 어떤 노드에 어떤 클래스를 적용할지 동적으로 결정하지 않는다는 것을 의미합니다. – kaizenCoder

1

당신은 그런 식으로 할 수 없습니다 해결 모든 노드에 ldap를 설치합니다. node2 내에 ldap 클래스가 포함되어야한다고 정의해야한다. 특정 노드에 변경 사항을 적용 할 때 독립적으로 파싱되므로 노드 1의 클래스/계층에 의해 "공제"될 수 없습니다.

이제
--- 
classes: 
    - base 
    - ldap 

node01.example.com.pp에서 : 내 생각

2

당신이 node01.example.com.yaml이있는 경우 지금 당신이 뭔가를 쓸 수 hiera_include('classes')

를 사용하는 것이 좋습니다

node 'node01.example.com' { 
     hiera_include('classes') 
} 
1

나는 새를 추천합니다 노드가 각 역할을 분리하는 솔루션 (puppetmaster < 4.0 인 경우).

node /^(projectnameinthreechar)-([a-z]{3})-db([\d]+)\./ { 
    class { 
      "server::project::db": 
        ; 
    } 
} 


class server::project::db ($paramteres) { ... } 

일치하는 모든 노드, 사람이 패턴을 cathing 호스트 이름 :

지금,/database.pp 명단

/^(projectnameinthreechar)-([a-z]{3})-db([\d]+)\./ 

예 : 예 당신이 할 수있는

web-can-db01 
1

.

다음을 수행해야합니다.

site.pp :

node default{ 
    hiera_include('classes') 
} 

hiera.YAML :

--- 
:backends: 
    - yaml 

:yaml: 
    :datadir: "/etc/puppetlabs/code/environments/{::environment}/hieradata" 

:hierarchy: 
    - "nodes/%{::trusted.certname}" 
    - "common" 

그리고 아래는 노드가 있어야 hieradata

node01.domain.com.yaml을 포함 디렉토리 :

--- 
classes: 
    - base 
    - application 

node02.domain.com .yaml :

--- 
classes: 
    - base 
    - ldap 
관련 문제