如何在Ansible上将多个变量输出保存到同一文件?

时间:2018-10-04 14:34:35

标签: ansible cisco

我正在使用Ansible管理多个网络设备。

到目前为止,我仅使用它来简化许多设备的配置,现在我想使用它来对设备的配置执行一些检查。

我的问题是:是否可以定义一个剧本来运行许多命令,并且只获取一个包含每个命令的所有输出的文件?

我希望每个设备每个命令避免1个文件。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用此技巧:

loop.yaml:

- name: get something from device
  command: some_command
  register: command_output
- name: Process output
  set_fact: 
    cumulative_output: '{{ cumulative_output|default([]) + [command_output.stdout] }}'

main.yaml:

- name: Running over all devices
  include_tasks: loop.yaml
  with_items: '{{ device_list }}'
- name: Saving cumulative result
  copy:
    content: '{{ cumulative_output|join("\n") }}'
    dest: /tmp/result.txt

主要功能:

  • 使用set_fact来评估jinja(与其他模块一样)
  • cumulative_output是标准输出列表
  • 使用include_tasks遍历某事

我不确定您如何收集这些信息以及将其存储在哪里,但是我希望该示例能为您提供总体思路:存储在列表中并使用set_fact技巧来更新该列表。