2014-04-18 7 views
0

저는 SaltStack을 사용하여 일부 VM을 관리하고 있습니다. top.sls 파일 또는 jinja 템플릿 사용 가능 파일의 특정 상태에서 지정된 .sls 파일이 첨부 된 미니언의 ID/호스트 이름을 렌더링하는 방법을 찾고 있습니다. 이 작업을 수행하려는 이유는 값을 하드 코딩하지 않고도 클라이언트의 구성에서 서버를 쉽게 참조 할 수 있기 때문입니다. 예를 들어;솔트 스탁에 특정 .sls 또는 상태가있는 미니언의 ID를 어떻게 렌더링 할 수 있습니까?

/srv/salt/top.sls :

base: 
    'desktoppc01': 
    - generic.dns 
    'bind9server01': 
    - generic.dns 
    - bind9 

/srv/salt/generic/dns/init.sls :

/etc/resolv.conf: 
    file: 
    - managed 
    - source: salt://generic/dns/files/resolv.conf 
    - mode: 644 
    - template: jinja 

그리고 마지막으로,

/SRV/소금/일반/DNS/파일/경우 resolv.conf :

domain {{ pillar['domain_name'] }} 
search {{ pillar['domain_name'] }} 
nameserver {{ list_minions_with_state['bind9'] }} 

내가 구체적으로 말한 것은 {{ list_minions_with_state['bind9'] }} (이는 데모 용으로 만 사용한 것임)과 동일합니다. 나는 그것이 꽤 일반적으로 필요할 것이라고 생각했지만, 모듈 페이지를 샅샅이 뒤지고 난 후에 아직 아무것도 발견하지 못했다.

현재 필자는 클라이언트가 기둥에서 정보를 얻지 만 수동으로 구성해야하므로 시간이 많이 소요되는 것처럼 느껴지지 않습니다.

이 아이디어를 for 루프로 확장하여 서버를 동적으로 추가 할 수 있기를 바랍니다.

편집

:

base: 
{% for server_id in salt['pillar.get']('servers') %} 
    '{{ server_id }}': 
{% for states in salt['pillar.get']('servers:{{ server_id }}') %} 
    - {{ states }} 
{% endfor %} 
{% endfor %} 

렌더링 같은 데이터 top.sls로 & 계층의 파일로

, 나는 {{ server_id }}에 몇 가지 변화를 시도하면

base: 

    'desktoppc01': 

    'bind9server01': 

을 제공하지만, 실패했습니다. 그 기능에서 기둥 변수를 사용하는 쉬운 방법이 없다면, 기능 요청을하고 하루로 부를 생각입니다. 바인딩 : 서버 변수

답변

1

나는이 문제를 생각하는 방법은 예를 들어

당신이 기둥을 가질 수 신사를 사용하여 DNS 서버의 목록 ... 기둥 변수에 의해 인구를 포함하는 변수를 가지고있다 는 http://docs.saltstack.com/en/latest/topics/tutorials/states_pt3.html 모두 설치에 경우 resolv.conf의 네임 서버를 사용할 수 있습니다

http://docs.saltstack.com/en/latest/topics/pillar/index.html#master-config-in-pillar를 볼 ..뿐만 아니라 추가 - 서버에 BIND9 상태. 그래서 결국 편집 할 장소가 하나만 있습니다. 기둥에있는 바인드 서버 인 미니언 목록

+0

그게 내가 달성하려고하는 것을 가능하게하는 것 같습니다. (꽤 해키 웠고 기둥에 중요한 정보가 있음). 그러나 OP의 편집 내용에 따라'pillar.get' 함수 내에서 작업 할 변수가 없습니다. – user2640621

+0

{salt : 'pillar.get']의 상태에 대한 % ('서버 : {{server_id}}') %} – nthiebaud