Jinja语法错误:缺少endif,尽管已提供

44次阅读
没有评论

问题描述

在使用Salt 2019.2.0版本时,遇到了一个问题。他在状态文件中使用了if条件来检查值,并在匹配时运行相应的状态。尽管他已经提供了endif标签,但仍然提示Jinja找不到缺失的endif标签。他希望能得到帮助解决这个问题。

解决方案

请注意以下操作注意版本差异及修改前做好备份。
根据用户提供的代码和错误信息,我们可以看出问题不在于用户提供的代码段。错误可能出现在代码的其他部分。我们可以使用Jinja的在线解析器来进一步分析问题。
以下是一个简单的示例,使用用户提供的代码和pillar:

{% if spade.corename == 'FI' and spade.nodetype == 'master' %}
dataimport-script:
  file.managed:
    - name: /opt/bin/DataImport.py
    - source: salt://files/DataImport.py
dataimport-crontab:
  file.managed:
    - name: /etc/cron.d/solr-dataimport
    - contents: |
        # set up data import for FI every 2 minutes
        */2 * * * * root /usr/bin/python /opt/bin/DataImport.py
{% elif spade.nodetype in ['slave','ds'] and spade.corename == 'FI' %}
update-fi-solrconfig:
  file.replace:
    - name: {{ salt['pillar.get']('solr:home_dir') }}/data/{{ salt['pillar.get']('spade:Corename') }}/conf/solrconfig.xml
    - pattern: '"autoDeletePeriodSeconds">30'
    - repl: '"autoDeletePeriodSeconds">-1'
{% endif %}

根据这个示例,我们可以看到代码没有语法错误。错误信息中提到有至少205行代码,但示例中的代码远远不到这么多,这说明问题可能出现在代码的其他”if”块中。
因此,我们建议用户检查代码中其他”if”块的语法是否正确,并确保所有的”if”块都有相应的”endif”标签。

正文完