我正在尝试配置一个状态,它将查看系统的主目录,并遍历它们以检查特定文件。为了实现这一点,我最初写道:
{% for userdir in salt['cmd.run']('ls /home').split('\n') %}
对于我的循环,效果很好。但是,我想让它能够轻松地配置为替代环境,所以我考虑将主目录位置存储在一个支柱内,并将该行更改为:
{% for userdir in salt['cmd.run']('ls pillar['home']').split('\n') %}
我猜是Jinja syntax error: expected token 'comma', got 'home';
因为嵌入了双'
套
所以我尝试了:
{% for userdir in salt['cmd.run']('ls pillar["home"]').split('\n') %}
这给了我:Rendering SLS failed: mapping values are not allowed here;
我尽可能多地观察了支柱循环的情况,试图找到一个可以借鉴的例子,但似乎并不存在。
是否可以从 ls 中调用 pillar 信息?或者有更好的方法来实现这个目标吗?
任何帮助,将不胜感激。
答案1
您只需在字符串之外进行映射:
{% for userdir in salt['cmd.run']('ls '+pillar['home']).split('\n') %}