私はSaltの自動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 %}