저는 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':
을 제공하지만, 실패했습니다. 그 기능에서 기둥 변수를 사용하는 쉬운 방법이 없다면, 기능 요청을하고 하루로 부를 생각입니다. 바인딩 : 서버 변수
그게 내가 달성하려고하는 것을 가능하게하는 것 같습니다. (꽤 해키 웠고 기둥에 중요한 정보가 있음). 그러나 OP의 편집 내용에 따라'pillar.get' 함수 내에서 작업 할 변수가 없습니다. – user2640621
{salt : 'pillar.get']의 상태에 대한 % ('서버 : {{server_id}}') %} – nthiebaud