如何在 /srv/salt/top.sls 中检索 /srv/salt/projects 下的目录列表
How can I retrieve a list of directories under /srv/salt/projects in the /srv/salt/top.sls
我正尝试在我的 /srv/salt/top.sls 文件中使用如下所示的 for 循环。
{%- set prjlist = salt['file.find']('/srv/salt/projects',type='d',mindepth=1,maxdepth=1,print='name') %}
# {{ prjlist }}
{%- for prj in prjlist %}
'role:{{ prj }}_server':
- match: pillar
- projects.{{ prj }}.server
{%- endfor %}
当我 运行 "salt -l debug myhost state.apply test=True" 与上述 for 块的预期角色不匹配时。但是,如果我将 prjlist 分配替换为 find.file 应该像 with
一样返回的硬编码列表
{%- set prjlist = ['expected'] %}
那么salt果然找到了预期的作用¯\_(⊙︿⊙)_/¯.
如果我执行 "salt-call -l debug state.show_highstate" 并查看呈现的 top.sls 输出,当使用 salt['file.find'] 命令时,注释行显示为
#[u'expected']
但是如果我使用硬编码列表,评论就会变成
#['expected']
除此之外,渲染的块看起来是一样的。
我使用的是 2018.3.0 版(氧气)。
salt['file.find'] 行有什么问题吗?
我应该使用另一种更好的方法来获取 salt-master /srv/salt/projects 下的目录列表吗?
{% for path in salt['cp.list_master_dirs']() if salt['file.dirname'](path) == 'projects' %}
{% set prj = salt['file.basename'](path) %}
'role:{{ prj }}_server':
- match: pillar
- projects.{{ prj }}.server
{% endfor %}
我正尝试在我的 /srv/salt/top.sls 文件中使用如下所示的 for 循环。
{%- set prjlist = salt['file.find']('/srv/salt/projects',type='d',mindepth=1,maxdepth=1,print='name') %}
# {{ prjlist }}
{%- for prj in prjlist %}
'role:{{ prj }}_server':
- match: pillar
- projects.{{ prj }}.server
{%- endfor %}
当我 运行 "salt -l debug myhost state.apply test=True" 与上述 for 块的预期角色不匹配时。但是,如果我将 prjlist 分配替换为 find.file 应该像 with
一样返回的硬编码列表{%- set prjlist = ['expected'] %}
那么salt果然找到了预期的作用¯\_(⊙︿⊙)_/¯.
如果我执行 "salt-call -l debug state.show_highstate" 并查看呈现的 top.sls 输出,当使用 salt['file.find'] 命令时,注释行显示为
#[u'expected']
但是如果我使用硬编码列表,评论就会变成
#['expected']
除此之外,渲染的块看起来是一样的。
我使用的是 2018.3.0 版(氧气)。
salt['file.find'] 行有什么问题吗?
我应该使用另一种更好的方法来获取 salt-master /srv/salt/projects 下的目录列表吗?
{% for path in salt['cp.list_master_dirs']() if salt['file.dirname'](path) == 'projects' %}
{% set prj = salt['file.basename'](path) %}
'role:{{ prj }}_server':
- match: pillar
- projects.{{ prj }}.server
{% endfor %}