Это хорошая идея, чтобы сделать 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 (бесплатно, без башни) делают разные виды работы

  1. Ansible (без башни) - управление конфигурацией ( предоставление сервера / приложения, массовые обновления конфигурации)

  2. Rundeck - централизованный Планировщик заданий с контролем доступа, уведомлением, выводом заданий и т. д. (архив старые журналы, запускать некоторые скрипты и т. д.)


стандарты сервера идут ansible.

Adhoc / операция задача go rundeck.

Это то, что я сейчас использую.


  1. Если вы собираетесь использовать их как портал самообслуживания для разработчиков или операций тогда я бы сказал, что RBAC проще и интуитивно понятнее реализован в Tower, а не в Rundeck. Подумайте, сколько усилий и сложности требуется для установки RBAC, поскольку это может иметь решающее значение для групп, поддерживающих эти продукты.

  2. REST API в Tower проще и проще анализировать, чем в Rundeck.

  3. в башне вы можете видеть отдельные события в задаче playbook, в то время как в Rundeck все выбрасывается в один консольный вывод.

  4. динамические запасы в башне довольно полезны при развертывании в общедоступных облаках.


в то время, когда этот вопрос был задан, автор правильно заявил, что Ansible предоставил только пользовательский интерфейс за плату.

пользовательский интерфейс теперь открыт:AWX