Подтвердить что ты не робот

Является ли Ansible заменой инструмента CI, такого как Hudson/Jenkins?

Недавно в нашей компании мы решили использовать Ansible для развертывания и непрерывной интеграции. Но когда я начал использовать Ansible, я не нашел модулей для создания Java-проектов с Maven или модулей для запуска тестов JUnit или JMeter.

Итак, я в сомнительном состоянии: возможно, я использую Ansible неправильно.

Когда я посмотрел на Дженкинса, он может делать такие вещи, как сборка, запуск тестов, развертывание. Недостатком в Hudson является создание/удаление экземпляра в облачных средах, таких как AWS.

Итак, в общем, для каких целей нам нужно использовать Ansible/Jenkins? Для CI мне нужно использовать комбинацию Ansible и Jenkins?

Пожалуйста, пролите свет на правильное использование Ansible.

4b9b3361

Ответ 1

Во-первых, Дженкинс и Хадсон - это в основном тот же проект. Я буду называть это Дженкинсом ниже. Смотрите Как выбрать между Хадсоном и Дженкинсом?, Хадсон против Дженкинса в 2012 году и Какая самая заметная разница между Дженкинсом и Хадсоном из пользовательской перспективы? для большего.

Во-вторых, Ansible не должен быть механизмом непрерывной интеграции. Он (обычно) не проводит опрос репозиториев git и запускает сборки, которые не работают разумно.

Когда я могу просто использовать Jenkins?

Если ваша машинная среда и процесс развертывания очень просты (например, Heroku или железо, которое настроено за пределами вашей команды), Jenkins может быть достаточно. Вы можете написать пользовательский script, который выполняет развертывание в качестве окончательного этапа сборки (или цепочки).

Когда я могу просто использовать Ansible?

Если вам нужно только "развернуть" без необходимости сборки/тестирования, может быть достаточно Ansible. Например, вы можете запустить развертывание из командной строки или используя Ansible Tower. Это отлично подходит для небольших проектов, статических сайтов и т.д.

Как они работают вместе?

Хорошей комбинацией является использование Дженкинса для создания, тестирования и сохранения артефактов. Добавьте шаг для вызова Ansible или Ansible Tower для обработки фактического процесса развертывания. Это позволяет Ansible обрабатывать конфигурацию машины и позволяет Jenkins обрабатывать процесс CI.

Каковы альтернативы Дженкинсу?

Я настоятельно рекомендую Thoughtworks Go (не путать с Go the language) вместо Дженкинса. Другие включают CruiseControl, TravisCI и Integrity.

Ответ 2

Ansible - это просто "прославленный цикл SSH". CI - это не только работающее программное обеспечение, но и весь процесс управления успешностью и неудачей, кто получает уведомление и как слияние объединяется в целевой контроль версий.

Если мы сосредоточимся только на программном обеспечении, CI - это реактивный планировщик триггеров с помощью изменений кода и запускает типичную последовательность "validation-release-release-развертывание-развертывание" "шагов".

Так что в отношении программного обеспечения Ansible без дополнительного "сахарирования" - это всего лишь инструментарий для запуска вещей, которые могут быть теми самыми шагами, но это не CI. Безразличный (без башни) полностью лишен этой реактивной природы.

Если вы хотите жениться на Ansible с CI, вы можете.

Ansible tower - очень перспективный планировщик, но если вам нужно программное обеспечение CI, я думаю, что вам это не обязательно нужно. Любое приложение CI, способное запускать оболочку script, сможет запускать Ansible playbooks.

Тем не менее, в отличие от Ansible tower - инструменты CI знают, чтобы отображать отчеты об испытаниях всех тестовых фреймворков, запускать уведомления и т.д.

Сильная башня может иметь смысл в сложной среде с большим количеством групп, трогающих Ansible code... Правда, я не видел ни одной реальной причины платить за нее. Но если менеджеру понравился веб-интерфейс, ничто не может стоять, "но другие используют его".

Я подозреваю, что концепция Ansible Tower была в ответ на кукольное предприятие.

:)