pyinfra 3.8.0. Большой релиз с исправлениями безопасности и новыми операциями для Docker
Доступна новая версия инструмента для автоматизации инфраструктуры, написанного на чистом Python. Вместе с этим проект перешёл на полноценный semver: теперь номера версий будут оформляться как 3.8.0, а не как 3.8.
Безопасность
Это, вероятно, ключевое изменение релиза. При формировании команд теперь экранируются все пользовательские значения, что закрывает возможные сценарии command injection в коннекторах, операциях и утилитах.
Docker получил полноценную поддержку
В релиз добавили отдельный набор новых операций:
• operations.docker.compose — работа с управлением через Docker Compose
• operations.docker.build — создание образов
• operations.docker.login / logout — вход и аутентификация в реестре
Также появились новые факты: версия Docker, сведения о контейнерах, образах и сетях.
Новые операции и факты
• facts.server.Ports — вывод всех портов на хосте, находящихся в состоянии LISTEN.
• facts.server.Processes + server.kill — просмотр списка процессов и завершение выбранного.
• facts.server.AuthorizedKeys — чтение authorized_keys, а операция user_authorized_keys теперь стала идемпотентной.
• operations.files.unarchive — распаковка архивов вынесена в отдельную операцию.
• operations.files.download — теперь поддерживает limit_rate, чтобы ограничивать скорость загрузки.
• operations.git.repo — появился параметр depth для shallow clone.
Поддержка uv
Добавили факты и операции для работы с uv — пакетным менеджером Python. Подход с его использованием стал стандартным для проекта: все примеры в репозитории теперь запускаются через uv run pyinfra.
APT и пакетные менеджеры
• facts.apt.AptSources теперь поддерживает формат deb822 — актуальный способ описания источников в Debian/Ubuntu.
• В apt.packages добавили параметр purge для полного удаления пакетов вместе с конфигурационными файлами.
• apt.key обновили под современный подход без использования устаревшей команды apt-key.
Прочее
• config.INHERIT_ENV — новый параметр, позволяющий передавать переменные окружения локального процесса во все операции.
• dzdo — добавлена поддержка в качестве альтернативы sudo для повышения привилегий.
• Поддержка paramiko v4, совместимость с Python 3.14 и ленивая загрузка модулей фактов и операций для более быстрого старта.
Как обновиться:
pip install --upgrade pyinfra