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.jinja에 salt.renderers모듈을 사용하면 CLI가에에서에 액세스 할 수있는 반면, 네임 스페이스 salt.modules네임 스페이스를.

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

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

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