You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SaltStack状态中使用Jinja与Pillar?修复SLS文件语法错误

修复SaltStack SLS文件的Jinja语法错误

你遇到的语法错误源于Jinja模板的变量使用方式不当,以下是修复后的完整SLS文件:

{% set java_script_path = salt['pillar.get']('script_path', default='/opt/java-app') %}

{% if salt['pillar.get']('script_path') %}
{% set file = java_script_path ~ '/startup.sh' %}  # 修复:Jinja赋值语句内直接用变量,无需{{}},用~做字符串拼接

{% if salt['file.file_exists'](file) %}  # 修复:调用salt模块时直接传变量,不需要包裹{{}}
cmd.run:
  - name: mv {{ java_script_path }}/startup.sh {{ java_script_path }}/startup.sh.backup-$(date +'%Y-%m-%d-%H-%M-%S')
{% endif %}
{% endif %}

关键修复点说明:

  • 变量赋值环节:Jinja的set语句内部直接使用变量名即可,不需要额外用{{}}包裹;字符串拼接用~运算符(相比+更适配可能的空值场景)。
  • Salt模块调用环节:salt['file.file_exists']直接传入变量file即可,无需转成字符串模板形式,Jinja会自动解析变量值。
  • 日期格式引号:将原有的转义双引号"替换为单引号,避免和YAML语法冲突,同时保证shell命令能正确识别日期格式。

内容的提问来源于stack exchange,提问作者boxuan666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:26:26