Как сохранить выходные данные нескольких переменных в одном файле на Ansible? - PullRequest
0 голосов
/ 04 октября 2018

Я использую Ansible для управления несколькими сетевыми устройствами.

До сих пор я использовал его только для упрощения настройки многих устройств, теперь я хотел бы использовать его для выполнения некоторых проверок конфигурации устройств.

Мой вопрос: возможно ли определить одну книгу воспроизведения для запуска множества команд и получить только один файл со всеми выходными данными каждой команды в нем?

Я бы хотел, чтобы на каждую команду не приходилось по 1 файлу на устройство.

Спасибо

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете использовать этот трюк:

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 - это список stdouts
  • цикл над чем-то с include_tasks

Я не уверен, как вы собираете эту информацию и где ее храните, но я надеюсь, что этот пример даст вам общую идею: сохранить в списке и обновить этот список с помощью set_fact трюка.

...