Комментарии 21
У puppet есть agentless. Puppet bolt называется. CI/CD можно впихнуть куда угодно. PuppetDB ставить не обязательно. Ну я бы не сказал, что намного сложней ансибла, по мне совсем несущественно.
Отсутствие агента резко станет минусом, когда вам сусурити навяжет двухфакторку на каждый чих
К сожалению вы правы. И даже аргумент, что они отдают предпочтение агенту, который толком не проходил аудит, вместо ссш, который на сцене много лет и считается достаточно надежным и безопасным, срабатывает далеко не всегда. Особо одиозные безопасники просто требуют отключать ссш как класс. Когда говоришь им, что иногда единственный способ разобраться в проблеме это залогиниться на машину и посмотреть, что же происходит, в ответ слышишь - у вас есть логи на выделенном сислог сервере, вот по ним ии збирайтесь. Печаль.
Такое ощущение, что автоматизацией вы плотно не пользуетесь. Есть много вещей которые больно делать в ансибл.
Ansible популярнее Puppet, Chif, и др. примерно в 10 раз, судя по кол-ву звезд на GitHub, числу запросов в Google.
Это как сказать про PHP/JS-разработчика, "такое ощущение, что веб приложения вы не пишете, многие вещи больно делать на PHP/JS".
Просто для сравнения:

Да, хорошее сравнение с PHP, согласен.
Показательно что популярный не означает лучший.
Особенно мне нравится пренебрежительного отношения к PHP-разработчикам со стороны разработчиков на "более правильных" языках 🤮
Я не могу плохо относиться ни к одному языку, так как пишу одинаково плохо на всех в силу того что я сисадмин (ну или девопс, если хочу себя продать), но мой небольшой опыт именно разработки говорит о том что популярность инструментов не всегда показатель
Есть какие-то более точные и объективные показатели чем популярность?
У меня к сожалению только субъективный взгляд на инструменты.
Про php могу сказать что мне нравится меньше других, там по моим воспоминаниям в базовых функциях мешанина, то один аргумент первый то второй, но я давно на нем ничего не писал. Готов признать что для людей которые это держат в голове так как пишут регулярно, это не недостаток а ерунда. Так то мне груви нравится.
По поводу ансибла, он ничем не лучше и не хуже конкурентов, для серверов. Но лично мне милее шеф, но это вкусовщина.
С какими, например, трудностями вы сталкивались? Буду рад увидеть описание кейсов, обмен опытом всегда полезен.
У Ansible, как и у любого инструмента, есть свои ограничения. При выборе той или иной системы управления конфигурациями важно четко сформулировать, какие задачи вам предстоит решать, заранее протестировать инструменты.
В нашем случае Ansible справляется с тем уровнем задач, которые мы перед ним ставим. У нас проекты не завязаны на стеке, потому что считаем, что главное – не ПО, а экспертиза и гибкость. Если Ansible перестанет справляться – перейдем на другой инструмент :)
А чего в таблице нет терраформа? В паппете тоже есть наследование и приоритеты переменных в hiera. Такое ощущение что статься про то что анзибл луче других инструментов, но без описания фич другого. Безагентная система не всегда лучше, например если чтото случится с ссш, например демон упал изза ошибки конфига, или на системе все юзеры заблочились, или еще чего, то анзибл всьо, а паппет агент с гита стянет сам нужный конфиг и вернет как должно быть
puppet агент такой же демон, как и ssh. Он разве не может упасть из-за ошибки конфига или еще чего?
Может упасть если в его конфиге самого агента ошибка. В случаи ошибок для других модулей он логирует ошибку и далее не применяет ничего. Но как часто меняешь конфиг агента? Я один раз - когда он первый раз запускается на сервере и тянет все нужные настройки агента, которые никогда не меняются. SSH у меня падал и не раз, из-за того что для Debian11 и старее прописаны некоторые параметры, которые вызывают ошибку в новом SSH на Debian12. В таком случаи изменил параметры в паппете и ждешь когда агент их затянет и восстановит демон ssh
Спасибо, что отметили, Terraform упустили. Обновил в статье таблицу :)
Вы правы, каждый инструмент хорош по-своему, более того, я считаю, что нет идеального инструмента, выбирать надо всегда то, что лучше всего ложится на конкретный процесс.
В нашем случае Ansible прекрасно ложится на наши процессы – позволяет укладывать всё описание инфраструктуры в код и развернуть необходимые компоненты DWH за короткие сроки. Проблем с SSH в нашей практике не было, он есть на каждой машине по умолчанию и не требует ставить сначала агенты на каждую машину.
Что такое ансибл? Это:
- нечёткая структура переменных - хочу здесь, хочу там
- роли, но не роли (много подводных камней), может группа тасков?
- группа тасков, но произвольный вызывать без кастылей нельзя
- плейбуки, но толку мало, так что там? таски или роли внутри? смешивать нельзя
- переменные как бы внутри сущности, но нет, глобальные
- хочешь написать простую логику: вот тебе ямл, внутри jinja, а там фильтр
- вот так переменную использовать нельзя, а вот так - попробуй
- when: хм, там дальше строка или jinja? а, просто..
- замечательный перфоманс: 10 тривиальных задач на 2ms каждая, стартанём python процесс, импортнём вообще всё, до чего руки дотянутся, потратим кучу времени, выполним 2+2 и сдохнем. и так по кругу 1000 раз. Зато удобно, пока плейбук работает, можно на обед сходить.
- непредсказуемый инвентори: какая там у него структура, куда что складывать? а если мне файлы надо передать, но они специфичны для энва - это инвентори или просто папка files? Держать внутри инвентори или рядом с плейбуками? а почему файлы не ищутся в инвентори, но в плейбуках и ролях.
и много много других приколов. Вот и получается, что якобы умная замена bash. но.
ansible удобно где надо hello world, но там и bash справится и проще взять его,
а где не hello world и bash уже не вывозит... хм... ансибл тоже что-то не вывозит.
Основная проблема это ансибл накрутили для решения задач на которые он изначально не рассчитывался. Стандартный костыль реализация логики через жинжу... А этот любимый прикол в словаре не ключа. Накинем еще проблемы с совместимости версии :)
У Вас богатый опыт работы с Ansible :) Вы правы, Ansible иногда бывает слишком гибок :) Эти проблемы с гибкостью решаются конвенциями по написанию кода, как и в любом другом процессе, когда код использует команда, а не один человек.
Bash хорош, не спорю, но его скорее надо сравнивать не с решениями для оркестрации инфраструктуры, как Ansible и другие, а с другими скриптовыми языками вроде питона.
В нашем случае плейбуки выполняются по несколько минут, потому что главная задача, которую выполняет Ansible – это первичное развертывание инфраструктуры. Мы так быстро не обедаем :)) Другие задачи мы решаем другими инструментами, и об этом будут новые статьи :)
Возможно для людей из разработки DWH, тут открыли новый мир. Но это лишь инструмент автоматизации. И подбирать надо под задачу. Тут описаны лишь задачи развертывания и конфигурирования, а инструменту в принципе пофиг, что разворачивать.
Как просвящение для коллег - хорошо.
Что такое Ansible и как применяется в DWH-проектах? Сравнение Ansible с Puppet, Chef, SaltStack