У меня есть ситуация, когда у меня есть один файл csv с более чем 100 строками, столбцы выглядят следующим образом:
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
В настоящее время я пытаюсь выполнить итерацию / цикл по указанному выше CSV-файлу в Ansible, в файловом модуле: файл 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 }}"
Вы не можете разобрать csv как dict с помощью path
так как key
так как path
не является уникальным в вашем CSV-файле. Не совсем понятно, как {{ 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 }}"