Ответ 1
TL; DR - учитывая вашу среду Jenkins для CI/CD, я бы рекомендовал использовать только Ansible.
Вы заметили, что существует значительное пересечение между Ansible и Rundeck, поэтому лучше всего сосредоточиться на том, где каждый продукт фокусируется, его стиль и использование.
Фокус
Я считаю, что Rundeck фокусируется на том, чтобы позволить системным администраторам создавать (веб-сайт) портал самообслуживания, доступный как другим системным администраторам, так и, возможно, менее "техническим" /системным администраторам. Сайт Rundeck говорит: "Превратите свои операционные процедуры в задания самообслуживания. Безопасно дайте другим возможность контроля и видимости, в которой они нуждаются". Rundeck также чувствует, что он имеет более "централизованный" взгляд на мир: вы загружаете задания в базу данных и где они живут.
Для меня Ansible предназначен для devops, поэтому выстраиваем и автоматизируем развертывание (самостоятельно построенных) приложений таким образом, чтобы они были сильно повторяемы. Я бы сказал, что Ansible больше ориентируется на дома разработки программного обеспечения, которые строят свои собственные продукты: Ansible "playbooks" - это текстовые файлы, которые обычно хранятся в исходном контроле и обычно рядом с приложением, которое будут разворачиваться в планшетах.
Фокус создания задания
С Rundeck вы обычно создаете задания через веб-интерфейс.
С помощью Ansible вы создаете задачи /playbooks в файлах через текстовый редактор.
Операция/Задача/Стиль работы
Rundeck по умолчанию является обязательным - вы пишете сценарии, которые выполняются (через SSH).
Ansible является обязательным (т.е. выполняет команды bash), но также декларативным, поэтому в некоторых случаях, скажем, при запуске Apache вы можете использовать задачу service
, чтобы убедиться, что она работает. Это ближе к другим инструментам управления конфигурацией, таким как Puppet and Chef.
Сложные задания/скрипты
Rundeck имеет возможность запускать другое задание, определяя шаг в рабочем процессе Job, но по опыту это похоже на добавленное дополнение, чем серьезная функция верхнего уровня.
Ansible предназначен для создания сложных операций; запуск/включение/etc - это функции верхнего уровня.
Как работает
Rundeck - это серверное приложение. Если вы хотите запускать задания из другого места (например, CI), вам нужно либо вызвать в cli, либо сделать вызов API.
Прямая Ansible - это командная строка.
Proviso
Из-за перекрестной и общей гибкости Rundeck и Ansible вы можете достичь всего вышеперечисленного в каждом. Вы можете добиться контроля версий своих заданий Rundeck, экспортируя их в YAML или XML и проверяя их на исходный контроль. Вы можете получить веб-интерфейс в Ansible, используя Tower. и т.д. и т.д.
Ваши вопросы:
Дополнительные инструменты?
Я мог бы представить себе магазин SaaS, используя оба: можно было бы использовать Ansible для выполнения всех действий по развертыванию, а затем использовать Rundeck для выполнения одноразовых, adhoc-заданий.
Однако, хотя я мог представить себе это, я бы не рекомендовал это в качестве отправной точки. Я, я бы начал с просто Ansible и посмотреть, как далеко я доберусь. Я бы только сложить в Rundeck позже, если бы я обнаружил, что я действительно, действительно нужно запускать одноразовые.
CI/CD-
Ansible: ваша среда больше похожа на дом программного обеспечения, где вы развертываете свое приложение. Вероятно, это должно быть повторяемо (особенно, когда вы отправляете непрерывную доставку), поэтому вам понадобятся сценарии развертывания в исходном управлении. Вы хотите простоту, а Ansible - "просто текстовые файлы". Надеюсь, вы также захотите, чтобы ваши разработчики могли работать на своих машинах (правда?), Ansible децентрализована.
Используется вместе (для CI/CD)
Вызов Rundeck от Ansible, no. Конечно, это было бы возможно, но я изо всех сил пытаюсь найти веские причины. По крайней мере, не очень специализированные специфические для конкретного приложения или рамки.
Вызвать Ansible из Rundeck, да. Я мог представить, что кто-то сначала создает некоторые повторяющиеся команды adhoc в Ansible. Тогда я мог видеть, что есть небольшой спрос на возможность вызова этого без командной строки (скажем: нетехнические пользователи). Но, опять же, это зависит от вашей среды.