Ansible:如何通过删除标题来汇编文件?

时间:2017-11-01 12:24:54

标签: csv ansible

我们有多个csv文件可以根据需求进行连接。每个csv文件都包含标题,我们无法更改它们,因为它来自源代码。我有很多片段要结合起来。

示例CSV1

hostname,ip,zone
host1,1.3.2.4,EU
host2,1.3.2.5,EU

示例CSV2

hostname,ip,zone
host32,8.3.2.4,US
host22,8.3.2.5,US

所需的最终输出

hostname,ip,zone
host1,1.3.2.4,EU
host2,1.3.2.5,EU
host32,8.3.2.4,US
host22,8.3.2.5,US

我尝试使用 Ansible playbook

- assemble:
    src: /home/mycsvDirectory
    dest: /home/newCSV/mycombined.csv

以上组合工作完美,但每次都包含标题。在根据预期输出组合所有片段后,我希望只有一个标题。如何有效地在ansible中做到这一点? (我可以想到一种循环文件的方法,但是我对100个文件的效率很低)

1 个答案:

答案 0 :(得分:1)

assemble模块实际上不是用于语义合并文件的正确工具(即,以依赖于文件内容的方式合并文件)。解决问题的最简单方法是停止将标头放在所有片段文件中。

如果删除标题行不是一个选项,使用Ansible的最简单的解决方案可能是编写一个自定义模块来处理它(使用csv模块来解析所有片段,然后使用{{ 1}}或类似的生成输出。)

您可以使用几种hacky变通方法。例如,您运行后使用csv.writer块在文件上运行command: