В ansible-core 2.21.5 разработчики сосредоточились на трёх ситуациях, которые легко встретить в реальной автоматизации: правах служебного каталога подключений, загрузке RPM-пакетов через dnf5 и проверке коллекций с параметром secret. Релиз опубликован 5 октября 2026 года и содержит именно точечные исправления без отдельного списка новых функций.

В ansible-core 2.21.5 вошли всего три исправления
Небольшой changelog иногда говорит о характере релиза больше, чем длинный список функций. В официальных release notes для ansible-core 2.21.5 перечислены три bugfix — и каждый затрагивает рабочий сценарий, где автоматизация может вести себя иначе, чем ожидает автор playbook или коллекции.
Официальное объявление появилось 5 октября 2026 года. GitHub помечает v2.21.5 как актуальный релиз ветки 2.21, а PyPI указывает ту же дату публикации. В официальных материалах версия называется именно ansible-core 2.21.5, поэтому дальше используем это название.
Изменения распределились по трём компонентам:
| Компонент | Ситуация до исправления | Поведение в 2.21.5 |
ansible-connection | В редком случае каталог persistent connections мог создаваться при недостаточно приватной цепочке родительских каталогов | Ansible обеспечивает приватные права для каталога persistent connections |
ansible-test | validate-modules мог завершаться ошибкой, если документация плагина содержала ключ secret | Ключ secret принимается при проверке документации коллекции |
dnf5 | При download_only=true параметр download_dir не передавался в конфигурационный destdir DNF так, как описано в документации | destdir теперь получает значение из download_dir |
По масштабу это сервисный релиз. При этом исправления попадают сразу в три разных слоя Ansible: транспорт и постоянные подключения, инструменты разработки коллекций и управление пакетами.
Persistent connections получают более предсказуемые права доступа
Первое изменение касается ansible-connection. Этот компонент участвует в работе постоянных подключений, которые Ansible использует в сценариях, где соединение с управляемой системой сохраняется между отдельными задачами.
Разработчики описывают редкий пограничный случай: каталог для persistent connections мог оказаться в ситуации, когда предшествующие директории отсутствовали либо имели недостаточно приватные права. В 2.21.5 Ansible дополнительно гарантирует приватные права для самого каталога persistent connections.
Здесь есть тонкий момент. В changelog исправление находится в разделе Bugfixes, отдельного Security Fixes для версии 2.21.5 нет, CVE в описании этого изменения тоже не указан. Поэтому корректнее рассматривать изменение как устранение некорректного поведения с файловыми правами, без приписывания релизу статуса отдельного обновления безопасности.
Для инфраструктуры с сетевыми устройствами и другими подключениями, где используется persistent connection, эффект довольно понятен: служебный каталог создаётся с ожидаемым уровнем приватности даже в нетипичной структуре родительских директорий.
ansible-test 2.21.5 понимает ключ secret из будущего ansible-core 2.22
Самое любопытное изменение связано с ansible-test. Инструмент validate-modules больше не считает ошибкой документацию плагина, где у параметра указан ключ secret.
Почему это появилось именно сейчас? В ansible-core 2.22 параметр secret используется для маскирования значения опции в выводе. В ветке 2.21 этот ключ ещё не выполняет такую функцию: ansible-core 2.21 его игнорирует. Проблема возникала на уровне разработки коллекций — автор мог заранее описать secret для совместимости с 2.22, но проверка через ansible-test 2.21 воспринимала такую документацию как ошибочную.
Версия 2.21.5 меняет именно проверку. Теперь коллекция может содержать ключ secret в документации плагина и одновременно проходить sanity-тесты на ansible-core 2.21.
Получается редкий пример исправления, ориентированного сразу на две ветки проекта. Для пользователя ansible-core 2.21 семантика secret не включается. Для разработчика коллекции исчезает лишний конфликт между совместимостью с текущей стабильной веткой и подготовкой к поведению 2.22.
Это особенно заметно в CI, где одна коллекция проверяется сразу на нескольких версиях ansible-core. Раньше документация, подготовленная к 2.22, могла ломать validate-modules на 2.21.5rc1 и более ранних выпусках ветки. Финальный 2.21.5 разрешает такую документацию при sanity-проверке.
Модуль dnf5 снова связывает download_dir с реальным каталогом загрузки
Третье исправление относится к модулю dnf5. Оно затрагивает сценарий, в котором пакеты скачиваются без установки: download_only включён, а место сохранения задаётся через download_dir.
По документации download_dir должен определять каталог, куда попадут загруженные пакеты. Внутри DNF5 за это отвечает конфигурационный параметр destdir. В ansible-core 2.21.5 разработчики явно связывают эти два значения: когда download_only равен true, destdir получает значение из download_dir.
Для инфраструктурных сценариев это исправляет вполне конкретный класс задач. Например, playbook может заранее скачивать RPM-пакеты в выделенную директорию для последующей установки, переноса в изолированный сегмент или подготовки локального набора пакетов. После исправления модуль следует тому поведению, которое уже было заявлено для download_dir.
Сам changelog формулирует изменение коротко, поэтому релиз не даёт оснований расширять его смысл на все операции DNF5. Исправлен именно путь download_only + download_dir.
Релиз 2.21.5 продолжает стабильную ветку 2.21
Ветка ansible-core 2.21 появилась весной 2026 года, а непосредственно перед текущим релизом версия 2.21.4 была опубликована 8 сентября. Кандидат 2.21.5rc1 вышел 29 сентября, финальная сборка — 5 октября.
Контраст с предыдущим 2.21.4 заметен по changelog. В 2.21.4 разработчики исправляли маскирование данных авторизации в URL, работу tempfile с компонентами пути и ряд связанных сценариев. В 2.21.5 список сузился до трёх точечных исправлений.
PyPI указывает для ansible-core 2.21.5 требование Python 3.12 или новее и перечисляет Python 3.12, 3.13 и 3.14 среди классификаторов. Для релиза доступны два официальных артефакта:
ansible_core-2.21.5-py3-none-any.whlразмером около 2,5 МБ;ansible_core-2.21.5.tar.gzразмером около 3,4 МБ.
SHA-256 для wheel: 08886f9f3e23d129aa98a01271c4a47833516e1cb7c737a246788cb474f41222.
SHA-256 для исходного архива: 65bb3148c58ebb843cd5074004c805f404f152114d98476dd823324616c9c6cb.
Совпадающие контрольные суммы опубликованы и в официальном объявлении Ansible, и на странице релиза PyPI.
Три исправления показывают, где ветка 2.21 ещё требовала доводки
ansible-core 2.21.5 получился компактным: changelog не содержит отдельного блока новых возможностей и фиксирует три исправления. Одно меняет работу с правами служебного каталога, второе устраняет конфликт между тестами коллекций 2.21 и документацией для механизма secret из 2.22, третье возвращает dnf5 к документированному поведению при загрузке пакетов.
Особенно показательно исправление ansible-test: ветка 2.21 уже учитывает формат документации, который полноценно заработает в 2.22. В результате граница между текущей стабильной веткой и следующей версией становится менее болезненной для разработчиков коллекций.
Вопрос теперь смещается к ветке 2.22, которая на момент публикации 2.21.5 уже представлена предварительными сборками. Именно там ключ secret должен начать влиять на вывод значений, тогда как 2.21.5 ограничивается совместимостью на уровне проверки документации.