Вопрос или проблема
Я ищу локально установленный инструмент для создания и управления рабочими процессами в DevOps.
Обратите внимание, что я не ищу инструмент CI/CD, такой как Jenkins. Меня не интересует создание конвейеров, а создание рабочих процессов. Конечно, я могу делать всё, что угодно, с конвейером, но я понимаю, что моя работа в DevOps состоит из рабочих процессов. Эти рабочие процессы включают автоматизированные шаги (иногда выполнение конвейера) и ручные шаги.
Я выбрал несколько вариантов из этого списка на GitHub, но решил, что могу спросить здесь о рекомендациях.
У меня очень базовые требования:
- Может выполнять скрипт в выбранном скриптовом движке (bash, pwsh и т.д.) как часть задачи в рабочем процессе. Показывать вывод, вывод ошибок и т.д.
- Имеет приятный графический интерфейс, а рабочий процесс управляемый/редактируемый в графе.
- Можно явно видеть состояния отдельных шагов в работающем экземпляре рабочего процесса. Успешно, с ошибками и т.д.
- Имеет поддержку ручного шага. Это важное требование для меня. Если есть ручной шаг, движок рабочего процесса должен ждать вмешательства человека, либо чтобы просто что-то подтвердить, либо чтобы предоставить движку рабочего процесса необходимые данные, используемые на следующих шагах.
Бонусные баллы:
- Управление пользователями, ролями, правами
- Категоризация рабочих процессов
- Аутентификация OIDC
В упомянутом выше списке я вижу, что Airflow
и DolphinScheduler
имеют больше всего звезд, но они, похоже, созданы специально для работы с данными, так что я не уверен в этом.
Несколько часов в моем исследовании, я думаю, я нашел именно то, что хотел – Windmill
Ответ или решение
Инструменты управления рабочими процессами для DevOps
В современном мире DevOps важность автоматизации и оптимизации рабочих процессов становится все более очевидной. Вы явно ищете инструмент, который облегчает создание и управление рабочими процессами, а не просто CI/CD инструменты, как, например, Jenkins. Верное управление рабочими процессами может значительно повысить эффективность команды, сократив время на выполнение рутинных задач и повысив уровень взаимодействия между разработчиками и операционными командами.
Основные требования к инструменту
Вы указали несколько ключевых требований, которые помогут вам выбрать подходящий инструмент:
-
Запуск скриптов: Возможность запускать скрипты на выбранном языке сценариев (bash, PowerShell и т. д.) как часть задачи рабочего процесса. Полное отображение вывода и ошибок — это необходимость, чтобы разработчик мог быстро реагировать на сбои.
-
Графический интерфейс пользователя: Удобный графический UI, где вы можете управлять и редактировать рабочие процессы в виде графа. Это упрощает визуализацию и понимание рабочих процессов.
-
Отслеживание состояний: Четкое отображение состояний отдельных этапов в работе. Например, вы должны видеть, какие шаги были успешно выполнены, а какие провалились.
-
Поддержка ручных этапов: Это критически важный аспект для вашего рабочего процесса. Инструмент должен ожидать человеческого вмешательства при выполнении определенных действий — например, для подтверждения или введения необходимых данных.
Дополнительные пожелания
- Управление пользователями и правами доступа: Возможность гибко настраивать роли и права пользователей для безопасной работы в команде.
- Категоризация рабочих процессов: Упрощение поиска и управления разными рабочими потоками.
- OIDC аутентификация: Поддержка современного метода аутентификации для повышения безопасности.
Рекомендованные инструменты
Среди множества доступных решений, на которые вы наткнулись, я бы выделил два инструмента, которые соответствуют вашим требованиям.
Windmill
Windmill — это инструмент, который вы уже нашли и который действительно кажется наиболее подходящим для ваших нужд. Он предоставляет возможность:
- Запускать сценарии и управлять выводом.
- Иметь интуитивно понятный интерфейс с возможностью редактирования рабочих процессов.
- Отслеживать состояние задач в реальном времени.
- Внедрять ручные этапы, ожидающие подтверждения от пользователя.
Кроме того, Windmill предлагает дополнительные функции, такие как управление пользователями и поддержка различных механизмов аутентификации, что может быть большим плюсом.
Apache Airflow
Хотя вы упоминали опасения по поводу Apache Airflow, так как этот инструмент больше ориентирован на обработку данных, он на самом деле довольно универсален. Airflow предоставляет мощные возможности для управления задачами и может быть адаптирован для различных типов рабочих процессов, включая DevOps. Он также поддерживает ручные задачи, хотя и потребует немного больше усилий для настройки в соответствии с вашими требованиями.
Apache DolphinScheduler
Apache DolphinScheduler — это еще один неплохой вариант. Он также поддерживает управление задачами и возможность создавать сложные рабочие процессы с ручными шагами. Однако, его заточенность под обработку данных может быть недостатком, если ваши процессы не связаны с данными.
Заключение
Выбор правильного инструмента для управления рабочими процессами в DevOps крайне важен. Windmill представляется наиболее подходящим решением, учитывая ваши требования и пожелания. Однако не стоит забывать и о возможности адаптации других инструментов, таких как Apache Airflow или DolphinScheduler, для достижения ваших целей. Инвестирование в правильный инструмент позволит вам оптимизировать процессы и повысить производительность вашей команды, тем самым обеспечивая успешное выполнение проектов.