PyInfra 3.8.0 Is Out

· devtools · Source ↗

TLDR

  • PyInfra 3.8.0 ships a large batch of fixes and features across operations, facts, connectors, and docs, plus a switch to full semver.

Key Takeaways

  • New facts include server.Ports, server.AuthorizedKeys, server.Processes, Docker detail facts (version, container, image, network), and GpgKeyrings.
  • New operations include files.unarchive, files.download with limit_rate, docker.login/logout, docker.compose, docker.build, and git.repo depth support.
  • Security hardening: untrusted values now quoted across connectors, operations, and util; user inputs in operations expanded to prevent command injection.
  • apt.sources gains deb822 format support; apt.key modernized away from deprecated apt-key; apt.packages adds purge option.
  • Core API decoupled from Click via pluggable output functions; fact and operation modules now lazy-loaded for faster startup.

Hacker News Comment Review

  • Consensus among experienced Ansible users is that PyInfra’s plain-Python model is a clear usability win over YAML plus Jinja plus a custom DSL, with grep-able source and real type hints.
  • Commenters note no equivalent of Ansible Tower or Semaphore exists yet for PyInfra, leaving a gap for job orchestration, dashboards, and scheduled runs.
  • One thread highlights that LLM coding agents (Claude, Codex) still handle Ansible well due to abundant training examples, which may reduce the practical switching incentive for AI-assisted workflows.

Notable Comments

  • @wowi42: core contributor confirms agentless, no daemon, no central server; “your playbook is just Python. Not Python cosplaying as YAML.”
  • @Boxxed: “Pyinfra is what ansible should have been. It’s straight python rather than a janky mix of yaml, templates, and bolted-on control flow primitives.”

Original | Discuss on HN