我正在开发一个自动proftd安装whit Salt,我不会从模板中获取ftp用户但是我无法获得工作支柱,我将用户数据的支柱初始化并将其称为for循环,但是你不要在循环中获取支柱用户数据。
当我在minion中使用salt-call pillar.get ftpusers时,响应是:
本地:
这是我的支柱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
不要指望这是因为不能获得支柱数据。
答案 0 :(得分:3)
您的循环也应如下所示:
{% for user, args in pillar.get('ftpusers', {}).items() %}
此外,contents
的{{1}}参数不支持模板化。您需要做的是将file.managed
状态移到循环之外,并在文件模板中创建循环。您所在州的最终布局应如下所示:
/srv/herma-ftp/.ftpusers
你的/srv/herma-ftp/.ftpusers
file.managed:
source: salt://ftpserver/dot.ftpusers
template: jinja
...
...
{% for user, args in pillar.get('ftpusers', {}).items() %}
/srv/herma-ftp/{{user}}:
file.managed:
...
{% endfor %}
看起来像是:
ftpserver/dot.ftpusers