我正在使用Ansible管理多个网络设备。
到目前为止,我仅使用它来简化许多设备的配置,现在我想使用它来对设备的配置执行一些检查。
我的问题是:是否可以定义一个剧本来运行许多命令,并且只获取一个包含每个命令的所有输出的文件?
我希望每个设备每个命令避免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
技巧来更新该列表。