You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salt Jinja模板循环拼接字符串问题求助

Salt Jinja模板循环拼接字符串问题求助

各位好,我在使用Salt的Jinja模板拼接字符串时碰到了麻烦,想请大家帮忙看看。

我的需求是这样的:我需要获取Salt grain里名为accesslist的数组(里面存的是一组组名),把这些组名拼接到一个LDAP过滤规则的字符串里,最终生成多个memberOf条件组合的过滤语句。

我写的模板代码是这样的:

{% set access_filter = '(memberOf=CN=bbb,OU=Security,OU=Groups,OU=yyy,DC=xxx,DC=local)' %}

{% for acc in grains.accesslist %}
{% set access_filter = '(memberOf=CN={{ acc }},OU=Security,OU=Groups,OU=aa,DC=bb,DC=local)' ~ access_filter %}

{{ acc }}_call_off:
  cmd.run:
    - name: echo {{ acc }}
{% endfor %}

我一开始怀疑是grains读取或者循环迭代的问题,但后来验证发现这些部分都正常——循环里生成的每个{{ acc }}_call_off任务都成功执行了,执行日志如下:

ID: test_call_off
Function: cmd.run
Name: echo test
Result: True
Comment: Command "echo test" run
Started: 10:59:32.641942
Duration: 7.182 ms
Changes:

pid:
375233
retcode:
0
stderr:

stdout:
test

ID: test2_call_off
Function: cmd.run
Name: echo test2
Result: True
Comment: Command "echo test2" run
Started: 10:59:32.649277
Duration: 3.948 ms
Changes:

pid:
375234
retcode:
0
stderr:

stdout:
test2

ID: create_access_list
Function: file.append
Name: /etc/sssd/conf.d/ccom_sssd_configs.conf
Result: True
Comment: File /etc/sssd/conf.d/ccom_sssd_configs.conf is in correct state
Started: 10:59:32.655181
Duration: 14.477 ms
Changes:

但问题在于,我拼接出来的access_filter字符串并没有达到预期的效果,想请教下大家,我的拼接逻辑哪里出问题了?有没有正确的方式来实现这种循环拼接字符串的需求?

备注:内容来源于stack exchange,提问作者Computer guy next door

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 11:10:27