Saltstack에서 Jinja 출력을 검사하는 방법은 무엇입니까?


16

SLSSalt 에 템플릿 을 만들려고했지만 잘못된 구문이 생성되어 다음과 같은 오류가 발생합니다.

my-minion-id:
    - State 'system' in SLS 'network' is not formed as a list

원칙적으로는, 할 수 있어야 어떻게 든 그것이로 출력 구문 분석을 시도하기 전에 신사 템플릿의 출력을 검사 SLS파일을. Jinja renderer 용 Python 모듈이 salt.renderers.jinja있지만 CLI에서 실행하려고하면 오류가 발생합니다.

# salt my-minion-id salt.renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
    'salt.renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code
# salt my-minion-id renderers.jinja.render /srv/salt/network/init.sls
my-minion-id:
    'renderers.jinja.render' is not available.
ERROR: Minions returned with non-zero exit code

템플릿 출력을 어떻게 확인할 수 있습니까? 디버그하기가 어려워 야하는 것처럼 보이지 않습니다.

답변:


11

slsutil.renderer 모듈을 확인하십시오 .

이것은 당신이 원하는 것을해야합니다

salt my-minion-id slsutil.renderer /srv/salt/network/init.sls 'jinja'

이 모듈은 compile_template 함수를 직접 호출합니다.

편집 : /srv/salt/network/init.sls는 미니언의 경로입니다. 마스터를 미니언으로 타겟팅하지 않는 경우 다음을 수행해야합니다.

salt minion-id cp.cache_file salt://network/init.sls
salt minion-id slsutil.renderer /var/cache/salt/minion/files/base/network/init.sls

또는 cache_file이 뱉어 낸 파일을 가리 킵니다.

2018.3 이상인 경우 다음을 지정할 수 있습니다. salt://network/init.sls


그러나 / srv / salt / network는 어떤 경로입니까? 그것은 주인의 길입니까? 미니언?
Mrten

그것은 미니언의 길입니다. salt minion-id cp.cache_file salt://network/init.sls미니언에 캐시 된 후 또는 2018.3부터 시작하여 뱉어 낸 파일에 대해 slsutil.renderer를 실행 한 다음 실행할 수 있습니다.salt://network/init.sls
gtmanfred

8

밀접하게 관련된 문제로 어려움을 겪고 몇 주 전에 보낸 시간을 감안할 때이 문제를 더 빨리 파악하기를 바랍니다.

이 솔루션 salt.modules.cp.get_template은 Salt minion이 파일을 검색하고 템플릿 엔진을 통해 렌더링하여 읽을 수있는 장소에 배치하는 데 사용 되는 것으로 보입니다 .

# salt my-minion-id cp.get_template salt://network/init.sls /root/network.sls template=jinja
my-minion-id:
    /root/network.sls

여기에서 my-minion-id호스트에 연결하고에 배치 한 파일을 검사하십시오 /root/network.sls.

이것은 말이된다; salt.renderers.jinjasalt.renderers모듈을 사용하면 CLI가에에서에 액세스 할 수있는 반면, 네임 스페이스 salt.modules네임 스페이스를.

데이터 가시성 관점에서도 의미가 있습니다. 템플릿 렌더링 은 그레인 등을 사용할 수 있는 minion 에서 발생 하지만 미니언 코드를 실행하는 모듈이 마스터에 임의의 출력을 반환하는 모듈을 아직 보지 못했습니다 (예 : CLI에서 볼 수 있음). 반환 된 데이터는 구조가 정확하고 간결합니다. (이러한 모듈이있을 수 있지만 그 모듈이 무엇인지 모르겠습니다. 테스트 파일을 미니언에 놓는 것이 바람직한 솔루션입니다.)

편집 : @gtmanfred의 대답은 훨씬 좋고 직접적이며 그 대답을 받아 들였습니다. 유익한 목적으로 여기에 남겨 두겠습니다. 최상의 솔루션은 아니지만 여전히 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.