Ich habe eine Situation, in der ich eine CSV-Datei mit über 100 Zeilen habe. Die Spalten sehen wie folgt aus:
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
Derzeit versuche ich, die obige CSV-Datei in Ansible im Dateimodul zu iterieren/zu durchlaufen: Die YAML-Datei enthält Folgendes:
---
- 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 }}"
Antwort1
Sie können die CSV-Datei nicht als Dict mit „ path
as“ analysieren, key
da path
„as“ in Ihrer CSV-Datei nicht eindeutig ist. Es ist nicht wirklich klar, wie {{ sid }}
in dieser Datei damit umgegangen wird. Dies könnte bei Ihren nachfolgenden Aufgaben zu anderen Problemen führen ...
In diesem Fall ist es viel einfacher, es als Liste zu analysieren, indem man die key
Option auf das Modul löscht:
- read_csv:
path: test.csv
register: test
Jetzt können Sie das Ergebnis iterieren:
- 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 }}"