2017-12-26 3 views
0

필자는 단지 구성 관리를 처음 사용합니다.퍼핏 반복 외부 파일

나는 elasticsearch를 puppetize하려고 시도하고 있으며 파일에 elasticsearch 노드의 마스터 목록을 갖고 싶습니다 (이 목적이 아닌 여러 가지 용도로 사용될 수 있음).

ERB 템플릿을 통해 elasticsearch.yml을 추가하고 FDQN 목록을 discovery.zen.ping.unicast.hosts : [] param으로 확장하고 싶습니다. 나는했습니다

discovery.zen.ping.unicast.hosts: ["host1.domain.com", "host2.domain.com", "host3.domain.com", "host4.domain.com"] 

:

다음
host1.domain.com 
host2.domain.com 
host3.domain.com 
host4.domain.com 

꼭두각시가 ERB 템플릿을 빌드 PARAM이있다 : 예를 들어

내가 포함 된 외부 파일 모듈이라고 es_hosts/파일이 몇 가지 시도를했지만 머리를 감쌀 수 없습니다.

방화벽 목록 작성과 같은 기타 작업에이 목록을 사용하므로 팀에서 업데이트 할 수있는 참조 목록을 하나 갖고 싶습니다.

도움 주셔서 감사합니다.

답변

3

목록을 파일로 저장하는 것이 아니라 Hiera를 사용하는 것이 목록 및 기타 외부 데이터를 정의하는 것이므로 Hiera를 사용하는 것이 좋습니다.

(당신은 아직 Hiera을 사용하지 않은 경우, 당신은 확실히 그것을 읽어해야합니다.)

그래서 Hiera에서 당신은 것입니다 :

매니페스트에서
--- 
es_hosts: 
- host1.domain.com 
- host2.domain.com 
- host3.domain.com 
- host4.domain.com 

, 당신은에서 그것을 읽을 것

$es_hosts = hiera('es_hosts') 

가 (대신 hiera 기능, 우리는 종종 하이어에서 우리의 매니페스트로 데이터를 읽는 대신 인형의 자동 매개 변수 조회 기능을 사용하는 참고 : Hiera는 hiera 기능을 사용하여 a이지만 여러 조건에서 사용할 ES 호스트 목록 -이 목록을 특정 클래스 입력에 바인딩하지 않을 것을 제안합니다. 이 지금 당장 이해가되지 않는 경우, 매개 변수화 클래스와 자동 변수 조회에 대해 배울 필요하지만, 그렇지 않으면이 답변 관련이없는입니다)

마지막으로, ERB 템플릿에 당신은 다음과 같습니다.

discovery.zen.ping.unicast.hosts: ["<%= @es_hosts.join('", "') %>"] 

매니페스트의 $es_hosts 변수가 ERB 템플릿의 Ruby 인스턴스 변수 @es_hosts을 통해 액세스된다는 점에 유의하십시오.

마지막으로, 퍼핏 잊지에서 사용할 수있는 Elasticsearch Puppet 모듈이 있습니다. here. 이 모듈을 사용하는 것이 자신의 모듈을 작성하는 것보다 낫다는 것을 알 수 있습니다.

+0

감사합니다. Alex. 그게 잘 됐어. –