在一个for循环中Saltstack加载柱

我正在开发一个自动proftpd安装惠特盐。 我不会从模板中获得ftp用户,但我不能成为工作的支柱。 我初始化了用户数据的柱子,并将其调用为for循环,但是没有得到循环中的柱子用户数据。

当我做盐呼叫pillar.get ftpusers在奴才,答复是:

 local: 

这是我的支柱ftpusers.sls

 ftp-server.ftpusers: user: - user: user - passhash: j2k3hk134123l1234ljh!"·$ser - uuid: 1001 - guid: 1001 - home: /srv/ftp/user - shel: /bin/false 

这是for循环:

 {% for users in pillar.get('ftpusers', {}).items() %} /srv/herma-ftp/.ftpusers: file.managed: - user: root - group: root - mode: 444 - contents:'{{ user }}:{{ args['passhash'] }}:{{args['uuid'] }}:{{ args['guid'] }}::{{ args['home'] }}:{{ args['shel'] }}' - require: - file: /srv/herma-ftp /srv/herma-ftp/{{user}}: file.directory: - user: nobody - group: nobody - dir_mode: 775 - makedirs: True - require: - file: /srv/herma-ftp - watch: - file: /srv/herma-ftp module.run: - name: file.set_selinux_context - path: {{ args['home']}} - type: public_content_t - unless: - stat -c %C {{ args['home'] }} |grep -q public_content_t {% endfor %} 

当我在奴才

 salt-call -l debug state.sls herma-ftp-server saltenv=My-enviroment test=True 

不要期望这是因为不能得到支柱数据。

你应该注意到柱子就像字典一样工作。 在你当前的语法中,要访问关键的名字是“ftp-server.ftpusers”,而不是ftpusers。 如果你想要在层次结构中的信息,通常的做法是:

 ftp-server: ftpusers: user: - user: user - passhash: j2k3hk134123l1234ljh!"·$ser - uuid: 1001 - guid: 1001 - home: /srv/ftp/user - shel: /bin/false 

然后在模板中:

 {%- set ftp-server = pillar.get("ftp-server", {}) %} {%- for users in ftp-server.get('ftpusers', {}).items() %} {%- do_something() %} {%- endfor %}