首页 文章

Saltstack负载支柱在for循环中

提问于
浏览
2

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

不要指望这是因为不能获得支柱数据 .

1 回答

  • 3

    你的循环也应如下所示:

    {% for user, args in pillar.get('ftpusers', {}).items() %}
    

    此外, file.managedcontents 参数不支持模板 . 你需要做的是在循环之外移动 /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 看起来像:

    {% for user, args in pillar.get('ftpusers', {}).items() %}
    {{ user }}:{{ args['passhash'] }}:{{args['uuid'] }}:{{ args['guid'] }}::{{ args['home'] }}:{{ args['shel'] }}
    {% endfor %}
    

相关问题