можно организовать вывод энсибла в реалтайме на веб-интерфейс. Я написал веб-морду, которая стартует плейбуки, а точнее передает команду выполнения демону, тот выполняет, получает выхлоп в JSON и выводит на форму, но в таком случае мне приходится ожидать, пока плейбук отработает. Каким способом можно организовать потоковый вывод, то есть таска отработала, результаты сразу отлетели в файл, в демон, в поток или еще куда-то, чтобы с веб-морды можно было сразу читать эти данные?
А зачем ты переизобретаешь jenkins/gitlab CI/etc? Описанное поведение звучит, как проблема твоего демона или используемой тобой библиотеки, потому что ansible по умолчанию выдаёт данные в stdout
Потому что веб-интерфейс предназначен для первой линии, которых далеко пускать нельзя, а описанные программные продукты не удовлетворяют моей цели. Моя цель - это страничка, где пользователю предлагается, что он хочет развернуть (веб-сервер, сервер БД, публикацию 1С, виртуальный хост в Nginx), он заполняет нужные переменные и стартует задачу. То есть, я так понимаю, что со стороны Ansible никаких телодвижений делать не надо, надо только научить демона, чтобы он вывод не буферизовал, а сразу отправлял, куда надо, правильно я понимаю?
Собственно во первых ansible сразу выводит журнал в stdout/stderr Во вторых есть Callback plugins (https://docs.ansible.com/ansible/latest/collections/index_callback.html) которые позволяют модифицировать/форматировать/дублировать вывод. (https://docs.ansible.com/ansible/latest/plugins/callback.html#plugin-list)
Про колбэки в курсе, я как раз использую на данный момент колбэк json, но вот думаю посмотреть в сторону syslog_json
Как я понимаю современный подход такой, что пользовательская страничка, должна через Web API дёргать систему управления (AWX, semaphore, jenkins, GitlabCI, RunDeck, buildbot)
Ну значит тогда, пока оставлю как есть, пойду GitlabCI курить
Обсуждают сегодня