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 or as required (
- 💻 Agentless execution by speaking native SSH/Docker/subprocess.
- ❗️ Two stage process that enables
--dryruns 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):
Install pyinfra with
pipx (recommended) or
pipx install pyinfra
Now you can execute commands over SSH:
pyinfra my-server.net exec -- echo "hello world"
Or target Docker, the local machine, and other connectors:
pyinfra @docker/ubuntu exec -- echo "Hello world" pyinfra @local exec -- echo "Hello world"
As well as executing commands you can define state using operations:
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
Which can then be saved as a Python file like
from pyinfra.operations import apt apt.packages( name="Ensure iftop is installed", packages=["iftop"], update=True, _sudo=True, )
pyinfra @docker/ubuntu deploy.py
Now you know pyinfra!