Tenho uma situação em que tenho um arquivo csv com mais de 100 linhas e as colunas têm a seguinte aparência:
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
Atualmente estou tentando iterar/fazer um loop no arquivo CSV acima dentro do Ansible, dentro do Módulo de Arquivo: O arquivo yaml tem o seguinte:
---
- 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 }}"
Responder1
Você não pode analisar o csv como um ditado path
porque key
não path
é exclusivo em seu arquivo csv. Não está muito claro como {{ sid }}
será tratado nesse arquivo. Isso pode causar outros problemas em suas tarefas subsequentes...
Neste caso é muito mais fácil analisá-lo como uma lista descartando a key
opção no módulo:
- read_csv:
path: test.csv
register: test
Agora você pode iterar o resultado:
- 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 }}"