Tengo una plantilla SLSen Salt que estoy tratando de construir, pero emite una sintaxis no válida, lo que produce errores como:
my-minion-id:
- State 'system' in SLS 'network' is not formed as a list
En principio, debería ser posible, de alguna manera , examinar el resultado de la plantilla Jinja antes de que intente analizar el resultado como un SLSarchivo. Existe un módulo de Python para el renderizador Jinja salt.renderers.jinja, pero si intento ejecutarlo en la CLI, aparece un error:
# 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
¿Cómo puedo ver el resultado de mi plantilla? Parece absurdo que deba ser tan difícil de depurar.

salt minion-id cp.cache_file salt://network/init.slsy luego ejecutar slsutil.renderer contra el archivo que escupe después de ser almacenado en caché en el minion, o a partir de 2018.3, puede especificarsalt://network/init.slsDado el tiempo que pasé hace semanas luchando con un problema estrechamente relacionado, desearía haberlo resuelto antes.
La solución parece ser usar
salt.modules.cp.get_templatepara que Salt Minion recupere el archivo, lo entregue a través del motor de plantillas y lo coloque en un lugar legible:Desde allí, se conecta al
my-minion-idhost y examina el archivo en el que colocó/root/network.sls.Esto tiene sentido;
salt.renderers.jinjaestá en elsalt.renderersespacio de nombres, mientras que los módulos a los que tiene acceso desde la CLI están en elsalt.modulesespacio de nombres.También tiene sentido desde el punto de vista de la visibilidad de datos; la representación de plantillas ocurre en el minion , donde los granos y demás están disponibles, y aún no he visto un módulo que ejecute el código minion que devuelva resultados arbitrarios al maestro (para ver en la CLI, por ejemplo); los datos devueltos son invariablemente bien estructurados y concisos. (Puede haber un módulo de este tipo, pero no sé qué es. Sería una solución preferible para colocar archivos de prueba en un minion).
editar: la respuesta de @ gtmanfred es mucho mejor y más directa, y he aceptado esa. Dejo este aquí con fines informativos. No es la mejor solución, pero aún funciona.
fuente