请原谅我的无知,我仍在学习Ansible>这是我正在尝试做的事情:
-连接到设备✔
-抓取数据✔(JSON格式)
-de serialize(获取返回的每个json项的行✔
-写入文件✔
对于上述所有情况,我都使用了副本和Jinja模板
现在,当我在多种设备上运行该复制模块时,复制模块将覆盖上一次运行的结果。什么模块可以让我添加行并使用下面的Jinja模板
{% for item in results.response %}
{% for value in item.values() %}{{ value }}{% if not loop.last %},{% endif %}{% endfor %}
{{'\n'}}
{% if not loop.last %},{% endif %}
{% endfor %}
更新:
我不会启动或停止服务,也不会更改设备上的任何内容,而只是收集数据(例如接口和它们的IP)。结果是这样的
device1,eth0,1.1.1.2
device1,eth1,1.1.1.3
答案 0 :(得分:1)
这不是Ansible真正设计的任务。
如果模板建议内容为多行,则您可以滥用lineinfile
模块(多行内容永远不会与文件中的行匹配,因此它将内容不断添加到文件的末尾)文件):
- lineinfile:
line: |-
{% for item in results.response %}
{% for value in item.values() %}{{ value }}{% if not loop.last %},{% endif %}{% endfor %}
{{'\n'}}
{% if not loop.last %},{% endif %}
{% endfor %}
state: present
dest: file.txt
或者您可以致电shell: echo {{ template }} >> file
。