Это хорошая идея, чтобы сделать Ansible и Rundeck работать вместе, или использовать любой из них достаточно?
недавно я смотрю на Ansible и хочу использовать его в проектах. А также есть еще один инструмент Rundeck можно использовать для выполнения всех видов операций. У меня нет опыта работы ни с одним инструментом, и это мое текущее понимание о них:
подобные пункты
оба инструмента без агента и используют SSH для выполнения команд на удаленных серверах
основная концепция Rundeck-Node, такая же, как Ansible инвентаризация, ключевая идея-определить/управлять / группировать целевые серверы
- Rundeck может выполнять специальные команды на выбранных узлах, Ansible также может сделать это очень удобно.
- Rundeck может определить рабочий процесс и выполнить выполнение на выбранных узлах, это можно сделать с помощью Ansible, написав playbook
- Rundeck может быть интегрирован с инструментом CI, как Дженкинс, чтобы сделать работу развертывания, мы также можем определить работу Дженкинса для запуска ansible-playbook для развертывания работа
разные точки
Rundeck имеет концепцию работы, которую Ansible не
Rundeck имеет Планировщик заданий, который Ansible может достичь этого только с помощью других инструментов, таких как Jenkins или Cron tasks
Rundeck имеет веб-интерфейс по умолчанию бесплатно, но вы должны заплатить за Ansible Tower
кажется, что Ansible и Rundeck можно использовать для этого конфигурация / управление / развертывание работают, возможно, по-другому. Поэтому мои вопросы:
- являются ли эти два дополнительных инструмента или они предназначены для разных целей? Если это дополнительные инструменты, почему Ansibl сравнивается только с такими инструментами, как Chef/Puppet/Slat, но не с Rundeck? Если это не так, почему у них так много похожих функций?
- мы уже используем Jenkins для CI, чтобы построить конвейер непрерывной доставки, какой инструмент (Ansible/Rundeck) является лучше использовать для развертывания?
- если их можно использовать вместе, какова наилучшая практика?
любые предложения и обмен опытом очень ценятся.
6 ответов
TL; DR-учитывая вашу среду Дженкинса для CI / CD, я бы рекомендовал использовать только Ansible.
вы заметили, что существует значительное пересечение между Ansible & Rundeck, поэтому, вероятно, лучше сосредоточиться на том, где каждый продукт фокусируется, это стиль и использование.
фокус
Я считаю, что rundeck сосредоточен на том, чтобы позволить системным администраторам создавать (веб -) портал самообслуживания, доступный как другим системным администраторам, так и, возможно, менее "технические" / sysadmin люди. Сайт до Говорит,"превратите свои процедуры операций в задания самообслуживания. Безопасно дайте другим контроль и видимость, в которых они нуждаются.". Rundeck также чувствует, что у него более "централизованный" взгляд на мир: вы загружаете задания в базу данных, и там они живут.
для меня Ansible предназначен для devops - поэтому построение и автоматизация развертываний (самодельных) приложений таким образом, чтобы они были очень повторяемыми. Я бы поспорил этот Ansible более сфокусирован на домах разработки программного обеспечения, которые создают свои собственные продукты: Ansible "playbooks" - это текстовые файлы, которые обычно хранятся в системе управления версиями и обычно рядом с приложением, которое будут развертывать playbooks.
создание рабочих мест фокус
С помощью Rundeck вы обычно создаете задания через веб-интерфейс.
С помощью Ansible вы создаете задачи / playbooks в файлах с помощью текстового редактора.
Операция / Задача / Задание Стиль
Rundeck по умолчанию является обязательным-вы пишете сценарии, которые выполняются (через SSH).
Ansible является как императивным (т. е. выполняет операторы bash), так и декларативным, поэтому в некоторых случаях, скажем, начиная Apache, вы можете использовать service
задача убедиться, что он работает. Это ближе к другим инструментам управления конфигурацией, таким как Puppet и Chef.
сложные задания / скрипты
Rundeck имеет возможность запускать еще одно задание, определив шаг в рабочем процессе задания, но по опыту это похоже на пристроенное дополнение, чем серьезная функция верхнего уровня.
Ansible предназначен для создания сложных операций; запуск/включая / etc являются функциями верхнего уровня.
как это работает
Rundeck-это серверное приложение. Если вы хотите запускать задания откуда-то еще (например, CI), вам нужно будет либо вызвать cli, либо сделать вызов API.
прямой Анзибль это командная строка.
условие
из-за перекрестной и общей гибкости Rundeck и Ansible вы могли бы достичь всего вышеперечисленного в каждом. Вы можете получить контроль версий заданий Rundeck, экспортировав их в YAML или XML и проверив их в системе управления версиями. Вы можете получить веб-интерфейс в Ansible с помощью Tower. так далее. так далее. так далее.
вопросы:
дополнительные инструменты?
I можно было бы представить магазин SaaS, использующий оба: можно использовать Ansible для выполнения всех действий развертывания, а затем использовать Rundeck для выполнения одноразовых заданий adhoc.
однако, хотя я мог представить это, я бы не рекомендовал это в качестве отправной точки. Я бы начал с Ансибля и посмотрел, как далеко я зайду. Я бы только слой в Rundeck позже, если бы я обнаружил, что я действительно,действительно нужно запустить одноразовые.
CI / CD
Ansible: ваш окружающая среда больше похожа на программный дом, где вы развертываете свое собственное приложение. Вероятно, он должен быть повторяемым (особенно при непрерывной доставке), поэтому вам понадобятся сценарии развертывания в системе управления версиями. Вам понадобится простота, а Ansible - "просто текстовые файлы". Я надеюсь, что вы также захотите, чтобы ваши разработчики могли запускать вещи на своих машинах (правильно?), Анзибль является децентрализованной.
используется вместе (для CI/CD)
вызов Rundeck из Ansible, нет. Конечно, это было бы возможно, но я изо всех сил пытаюсь придумать веские причины. По крайней мере, не очень специализированные специфические для конкретного приложения или фреймворка причины.
вызов Ansible из Rundeck, да. Я мог представить, как кто-то сначала создает некоторые повторяющиеся команды adhoc в Ansible. Тогда я мог видеть, что существует небольшой спрос на возможность вызова этого без командной строки (скажем: нетехнические пользователи). Но, опять же, это зависит от вашей среды.
Он исключительно основан на ваших требованиях. Я использую rundeck для удаленного выполнения скриптов и развертывания приложений. Я интегрировал его с Форманом, чтобы покрыть управление подготовкой и конфигурацией.
Если у вас есть бюджетные ограничения смотреть не дальше, до скалы. Однако вы можете пропустить некоторые функции в Ansible. Также группа Google в значительной степени очень активна в случае поддержки.
Если у вас есть бюджет, инвестируйте в ansible tower, и вам может ничего не понадобиться еще.
моя точка-rundeck и ansible (бесплатно, без башни) делают разные виды работы
Ansible (без башни) - управление конфигурацией ( предоставление сервера / приложения, массовые обновления конфигурации)
Rundeck - централизованный Планировщик заданий с контролем доступа, уведомлением, выводом заданий и т. д. (архив старые журналы, запускать некоторые скрипты и т. д.)
Если вы собираетесь использовать их как портал самообслуживания для разработчиков или операций тогда я бы сказал, что RBAC проще и интуитивно понятнее реализован в Tower, а не в Rundeck. Подумайте, сколько усилий и сложности требуется для установки RBAC, поскольку это может иметь решающее значение для групп, поддерживающих эти продукты.
REST API в Tower проще и проще анализировать, чем в Rundeck.
в башне вы можете видеть отдельные события в задаче playbook, в то время как в Rundeck все выбрасывается в один консольный вывод.
динамические запасы в башне довольно полезны при развертывании в общедоступных облаках.
в то время, когда этот вопрос был задан, автор правильно заявил, что Ansible предоставил только пользовательский интерфейс за плату.
пользовательский интерфейс теперь открыт:AWX