templates - Jinja 注释掉命令会破坏模板

标签 templates ansible jinja2 ansible-inventory

嗨,我觉得我需要为我现在挣扎了几个小时的事情提供答案。我希望有一天这对某人有所帮助。

我一直在尝试自动化 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/

相关文章:

amazon-s3 - 通过 Ansible 从 AWS S3 存储桶中获取整个存储桶或多个对象

ssl - 哪个先出现 - 创建 nginx 站点 `.conf` 文件或运行 `certbot-auto certonly`?

flask - Jinja2 正确缩进包含的 block

c++ - 显式特化函数模板的正确方法

c++ - 具有二叉搜索树的类函数中的模板语法

ubuntu - 使用 Ansible 和 apt,如何将 bash 更新为可远程利用的安全漏洞 CVE-2014-6271?

python - 如何增加 flask 形式的 bool 字段的大小?

python - 为什么验证不适用于表单请求?

c++ - 检测编译时文字和常量

Java 接口(interface)和模板的混淆