代码之家  ›  专栏  ›  技术社区  ›  MiniMe

如何将行追加到ansibe控制器上的文件(从远程设备收集数据)

  •  0
  • MiniMe  · 技术社区  · 6 年前

    请原谅我的无知,我仍在学习Ansible>以下是我要做的:

    -连接到设备

    -反序列化(获取返回中每个json项的行
    -写入文件

    现在,当我在多设备上运行它时,复制模块会覆盖上一次运行的结果。什么模块允许我附加行并使用下面的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 %}
    

    更新:
    设备1,eth0,1.1.1.2
    设备1,eth1,1.1.1.3

    1 回复  |  直到 6 年前
        1
  •  1
  •   techraf    6 年前

    这不是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