问题描述
在使用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”标签。
正文完