Да он проще, низкий порог входа, отраслевой стандарт и всё такое. Но вот обратная сторона:

  1. Простой и многословный, некоторые вещи можно было бы реализовать удобнее. Например, копируешь файл - если нет каталога, то создай его(в saltstack есть опция makedirs: True/False)

  2. Позволяет быстро, абсолютно не зная ansible, написать что угодно с помощью ИИ. Для разовой истории это допустимо, но в случае, когда вся инфраструктура описана как код (IaC) это путь к хаосу.

    Даже если разделить конфигурацию на роли, то велика вероятность что роли будут дублироваться, будут одноразовыми (сотрудник1 написал роль для сервера Х, хотя мог использоватьсуществующую). А если ещё нет линтера на push, ограничений на размер файлов, то хаос уже здесь.

Применение конфигурации должно быть регулярным, для того чтобы поддерживать ее в актуальном состоянии. Или как минимум должен быть мониторинг расхождения конфигурации между желаемой и фактической. Конечно, если время жизни сервера 1-2 недели, то можно не заморачиваться с поддержанием актуального состояния. Но когда сервер классический - долгоживущий, то с ростом его uptime конфигурация всё дальше от задуманной. И вот когда случается проблема/reboot и выясняется, что какие-то правила iptables/nft не были учтены, какие-то параметры sysctl были применены, но также не зафиксированы, сервис не включен в автозагрузку. Хорошо если это кластер и есть рядом похожий сервер, можно оперативно восстановить правильное состояние. А если нет?

Ansible расхолаживает, позволяет локально написать роль или playbook и тут же его “раскатать”. Быстро и результат сразу виден. Сделал и забыл. Забыл закомитить в гит, написать Readme.md, рассказать коллегам… Все почему? Потому, что нет регулярного применения. Когда оно настроено, то вот такие быстрые правки, так же быстро откатываются до состояния текущего git. И тогда приходится комитить, тепреть душнилу линтера и всякие хуки. Плюс ко всему пушить в мастер нельзя, нужно создать ветку, а для мержа нужно подтверждение коллег. Да это бюрократия, больше времени уходит на внесение изменений. Зато конфигурация под контролем, всегда ясно кто и когда вносил изменения. Для проверки гипотез, новых фич используй dev окружение или канареечный инстанс сервиса.

И напоследок что хорошего в Ansible:

  • понятная обработка jinja, последовательная, а не как в saltstack - сначала отрисовывается ВСЯ jinja по всея конфигурации и только потом парсится yaml стейты
  • встроенная система ролей продумана и понятна