jinja2 - 在 saltstack 中使用 jinja 和柱子.get() // 过滤器的工作方式不如预期
问题描述
我在 bash 命令行和 Pillar.get() 的 SLS 文件中有不同的结果。
在命令行中,我收到了预期的结果。
salt-master:/srv/pillar # salt salt-minion2 pillar.get mqobjdetails
salt-minion2:
----------
QM200@QLOCAL@LQ2:
----------
DEFPSIST:
NO
GET:
ENABLED
MAXDEPTH:
5000
MAXMSGL:
4194304
MONQ:
QMGR
QM200@QMGR@QM200:
----------
DEADQ:
MAXMSGL:
4194304
MONCHL:
OFF
MONQ:
OFF
并带有过滤器
salt-master:/srv/pillar # salt salt-minion2 pillar.get mqobjdetails:QM200@QLOCAL@LQ2
salt-minion2:
----------
DEFPSIST:
NO
GET:
ENABLED
MAXDEPTH:
5000
MAXMSGL:
4194304
MONQ:
QMGR
当我使用以下 jinja 循环语句在状态文件中尝试相同的事情时
{% for objkey, parameters in pillar.get('mqobjdetails', { } ).items() %}
循环按预期工作。
当我尝试使用附加过滤器时
{% for name, value in pillar.get("mqobjdetails:QM200@QMGR@LQ2", { } ).items() %}
循环永远不会运行。所以在这种情况下,我似乎得到了一个空集。
我错了什么?有人可以帮我吗?
解决方案
我刚刚在文档中找到了答案。
有一个注释,比较了pillar.get() 与 salt'pillar.get'。
好吧,当我使用类似的东西时
{% for name, value in salt['pillar.get']('mqobjdetails:' ~ foo, { } ).items() %}
我得到了预期的结果。
我仍然不喜欢这样的想法,即相同的功能具有不同的行为。
推荐阅读
- javascript - 如果使用确认对话框,history.pushState 会在刷新后删除历史记录
- spartacus-storefront - Spartacus 登录时将语言更改为用户默认语言
- java - (初学者)我似乎无法修复的 Printf 错误
- javascript - 当我编辑第 14 行 addReminder 函数时,该应用程序打破了对我做错了什么的任何洞察力?
- vue.js - NuxtJS:如何在 URL 中传递参数和查询
- performance - 从 C 语言在 CPU 上加载 tensorflow.keras 模型以缩短加载时间的最佳方法是什么?
- php - How can I insert into a table both a select max function from another table and variables input by the user, using PHP, SQL and Microsoft Access?
- excel - 如何计算某个日期之前的日期数(2021 年 3 月 1 日)
- pandas - Numpy 广播比较报告“'bool' object has no attribute 'sum'”错误处理大数据帧时
- python - 基于时间戳列合并两个数据帧