使用Ansible将带有服务器名称的新列添加到文件中

时间:2019-06-14 10:26:22

标签: csv ansible assemble

我在/ tmp / test文件夹中有4个文件,分别是serverA.csv(1,2,3),serverB.csv(4、5、6),serverC.csv(7、8、9),serverD。 csv(10,11,12)。 我已经使用汇编模块合并了所有这些文件。

 - name: assemble files
    assemble:
     src: /tmp/test/
     dest: /tmp/logrotate/test.csv

现在文件已合并,新文件test.csv具有合并的内容。

1,2,3
4,5,6
7,8,9
10,11,12

我需要的是,我需要在服务器名称的开头添加一列。名称出现在文件名中。 预期的输出。

serverA,1,2,3
serverB,4,5,6
serverC,7,8,9
serverD,10,11,12

任何人都可以提供任何建议吗?

1 个答案:

答案 0 :(得分:1)

如果文件在ansible系统本地,则可以在assemble files之前使用其他任务。

- name: prepend filename in every line
  replace:
    path: '{{ item }}'
    regexp: '^(.+)$'
    replace: '{{ item | basename | regex_replace("\.csv") }},\1'
  with_fileglob:
    - '/tmp/test/*'

当文件位于远程系统上时,在执行任务之前必须使用find而不是with_fileglob

- name: find files
  find:
    path: '/tmp/test'
  register: result

- name: prepend filename in every line
  replace:
    path: '{{ item.path }}'
    regexp: '^(.+)$'
    replace: '{{ item.path | basename | regex_replace("\.csv") }},\1'
  loop: '{{ result.files }}'