pyinfra automates infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployment, configuration management and more. Core design features include:

  • 🚀 Super fast execution over thousands of targets with predictable performance.
  • 🚨 Instant debugging with stdout + stderr output on error, and -v to print it always.
  • 💻 Agentless execution by speaking native SSH/Docker/subprocess.
  • ❗️ Two stage process that enables --dry runs before making any changes.
  • 📦 Extendable with any Python package as configured & written in standard Python.
  • 🔌 Integrated with Docker, Vagrant & Ansible out of the box.

When you run pyinfra you'll see something like (non animated version):


pyinfra can be installed via pip:

pip install pyinfra

Now you can execute commands & operations over SSH:

# Execute an abitrary shell command
pyinfra exec -- echo "hello world"

# Install iftop apt package if not present
pyinfra apt.packages iftop sudo=true

These can then be saved to a deploy file, let's call it

from pyinfra.operations import apt

    name='Ensure iftop is installed',

And executed with: