嗨,我觉得我需要为我现在挣扎了几个小时的事情提供答案。我希望有一天这对某人有所帮助。
我一直在尝试自动化 Ansible 部署的模板:
库存内容:
[splunk_license]
10.10.113.209
[splunk_master]
[splunk_search]
10.10.113.209
[splunk_indexer]
10.10.113.234
我的模板有基于是否 的逻辑splunk_master 组是否定义了主机。
原始代码:
{% if inventory_hostname in groups['splunk_indexer'] and
groups['splunk_master']|length > 0 %}
#{% if blah blah blah blah...%}
# CUSTOMER INDEXES go to $SPLUNK_HOME/etc/master-apps/_cluster/local/indexes.conf
# on Master node
{% elif inventory_hostname in groups['splunk_master'] %}
#{% if some other blah blah blah blah...%}
# CUSTOMER INDEXES go to $SPLUNK_HOME/etc/master-apps/_cluster/local/indexes.conf
{% else %}
# CUSTOMER INDEXES
[nothing]
coldToFrozenDir = $SPLUNK_DB/frozen/nothing/frozendb
thawedPath = $SPLUNK_DB/hotwarm/nothing/thaweddb
coldPath = volume:secondary/nothing/colddb
homePath = volume:primary/nothing/db
{% endif %}
无论我做了什么,我都无法在 {% else %} 工作后得到底部。
事实证明,注释掉 '#' 实际上并不会导致该行被忽略,这是我出于测试目的而使用的,因为我厌倦了一遍又一遍地输入内容。
我试图从星期天开始修改我的(未注释的)if 语句,我要么只得到模板的顶部,一个提示意外的“elif”或组未找到错误的 ansible 错误。
最佳答案
本来打算在这里寻求帮助,但最后一刻试图删除所有注释行,现在我的模板终于可以工作了。
工作代码(删除注释行):
{% if inventory_hostname in groups['splunk_indexer'] and
groups['splunk_master']|length > 0 %}
# CUSTOMER INDEXES go to $SPLUNK_HOME/etc/master-apps/_cluster/local/indexes.conf
# on Master node
{% elif inventory_hostname in groups['splunk_master'] %}
# CUSTOMER INDEXES go to $SPLUNK_HOME/etc/master-apps/_cluster/local/indexes.conf
{% else %}
# CUSTOMER INDEXES
[nothing]
coldToFrozenDir = $SPLUNK_DB/frozen/nothing/frozendb
thawedPath = $SPLUNK_DB/hotwarm/nothing/thaweddb
coldPath = volume:secondary/nothing/colddb
homePath = volume:primary/nothing/db
{% endif %}
抱歉,如果这是 Jinja 的明显行为,我想我还是会在这里发帖,以免有人在这个问题上浪费时间。
关于templates - Jinja 注释掉命令会破坏模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58753208/