Ansible을 사용하여 CSV 파일 작업

Ansible을 사용하여 CSV 파일 작업

100개 이상의 행이 포함된 하나의 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 파일에서 고유하지 않기 때문에 pathas를 사용하여 csv를 dict로 구문 분석할 수 없습니다 . 해당 파일에서 어떻게 처리될지는 확실하지 않습니다 . 이로 인해 후속 작업에서 다른 문제가 발생할 수 있습니다...keypath{{ 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 }}"

관련 정보