pyinfra 3.8.0: безопасность, Docker и полный semver

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

Тэг на GitHub