我正在开发一个自动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 %}