是否可以直接从 Jinja2 模板访问操作系统环境变量?
原文由 Roberto Aloi 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以直接从 Jinja2 模板访问操作系统环境变量?
原文由 Roberto Aloi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我相信您可以像这样访问环境变量:
{{ env['XMPP_DOMAIN'] or "localhost" }}
这是我最近看到的一个配置文件中的示例,用于 ejabberd 的 Docker 部署。
hosts:
- "{{ env['XMPP_DOMAIN'] or "localhost" }}"
注意: 您可以在 Github 存储库的 运行 文件中看到示例的其余部分。
据我了解,繁重的工作是由这段代码完成的:
readonly PYTHON_JINJA2="import os;
import sys;
import jinja2;
sys.stdout.write(
jinja2.Template
(sys.stdin.read()
).render(env=os.environ))
"""
而这段代码是用来生成模板文件的:
cat ${CONFIGTEMPLATE} \
| python -c "${PYTHON_JINJA2}" \
> ${CONFIGFILE}
原文由 slm 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
按照@Renier 在评论中关于自定义过滤器的指示,我想出了一个可能的解决方案。
定义 自定义过滤器:
在环境中安装过滤器:
使用过滤器如下:
其中适当的环境变量可以设置为:
如果设置了环境变量,输出将是:
否则: