100 行を超える列を持つ 1 つの CSV ファイルがあり、列は次のようになります。
path,owner,group,mode
/prod/home/{{ sid }},root,root,755
/prod/FS/{{ sid }},sapadm,sys,770
/prod/FS/{{ sid }},adm,sys,0770
/prod/FS/{{ sid }},adm,sys,0770
/prod/FS/{{ sid }},sys,sys,0770
/prod/FS/{{ sid },adm,ftp,0770
現在、Ansible のファイル モジュール内で上記の CSV ファイルを反復処理/ループ処理しようとしています。yaml ファイルには次の内容が含まれています。
---
- hosts: localhost
connection: local
gather_facts: no
tasks:
- read_csv:
path: test.csv
key: path
register: test
- name: Check File Systems for Any changes
file:
path: "{{ item.value.path}}"
owner: "{{ item.value.owner }}"
group: "{{ item.value.group }}"
mode: "{{ item.value.mode }}"
state: directory
recurse: no
loop: "{{ test.dict|dict2items }}"
答え1
はcsv ファイル内で一意ではないため、path
as を使用して csv を辞書として解析することはできません。がそのファイル内でどのように処理されるかは明確ではありません。 これにより、後続のタスクで他の問題が発生する可能性があります...key
path
{{ sid }}
この場合、key
モジュールにオプションをドロップすることで、リストとして解析する方がはるかに簡単になります。
- read_csv:
path: test.csv
register: test
これで、結果を反復処理できます。
- name: Check File Systems for Any changes
file:
path: "{{ item.path }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
state: directory
recurse: no
loop: "{{ test.list }}"