Как я могу агрегировать результаты команды SaltStack?

Можно ли запустить команду SaltStack, которая, скажем, проверяет, запущен ли процесс на машине, и агрегирует результаты выполнения этой команды на нескольких миньонах?

По сути, я бы хотел, чтобы все результаты, возвращаемые миньонами, отображались в чем-то вроде таблицы ASCII. Возможно ли иметь средство форматирования результатов uber, которое ждет, пока все результаты вернутся, а затем применяет формат? Возможно, есть другой подход?


person Bryan    schedule 07.08.2013    source источник


Ответы (2)


Если вы хотите сделать это полностью в Salt, я бы порекомендовал создать «вывод», который отображает данные так, как вы хотите.

Недавно был создан модуль вывода "highstate", который может стать хорошей отправной точкой. Средство вывода highstate создает небольшую сводную таблицу возвращаемых данных. Он может быть найден здесь:

https://github.com/saltstack/salt/blob/develop/salt/output/highstate.py

Я бы порекомендовал также просмотреть код других модулей вывода.

Если вы хотите использовать другой инструмент для создания этого отчета, я бы рекомендовал добавить «--out json» к вашей команде в cli. Это приведет к тому, что Salt вернет данные в формате json, которые вы затем сможете передать другому приложению для обработки.

person Utah_Dave    schedule 08.08.2013
comment
Кроме того, для конкретных состояний вы можете просмотреть вывод состояния terse или mixed. Ознакомьтесь с основным шаблоном конфигурации для получения дополнительной информации, там есть опция. - person Colton Myers; 08.08.2013
comment
Спасибо за ссылку! Действительно выглядит как хорошая отправная точка. Можете ли вы также предоставить ссылку на то, где этот вывод вызывается? Мне нужно понять, как возвращаемые данные от всех миньонов объединяются перед передачей в выходное устройство. - person Bryan; 09.08.2013

Об этом спрашивали давно, но я не раз сталкивался с этим, и подумал, что может быть полезен другой подход — воспользуйтесь опросом Salt runner:

$ salt-run survey.hash '*' cmd.run 'dpkg -l python-django'
|_
  ----------
  pool:
      - machine2
      - machine4
      - machine5
  result:
      dpkg-query: no packages found matching python-django
|_
  ----------
  pool:
      - machine1
      - machine3
  result:
      Desired=Unknown/Install/Remove/Purge/Hold
      | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
      |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
      ||/ Name           Version      Architecture Description
      +++-==============-============-============-=================================
      ii  python-django  1.4.22-1+deb all          High-level Python web development
person M Somerville    schedule 14.10.2016