Fizzadar/pyinfra
![Fizzadar/pyinfra](/images/project/fizzadar_pyinfra_hu120398555e1513642b6c867f1d07f6f0_35904_900x500_fit_q75_box.jpg)
pyinfra automates infrastructure super fast at massive scale. It can be used for ad-hoc command execution, service deployment, configuration management and more.
repo name | Fizzadar/pyinfra |
repo link | https://github.com/Fizzadar/pyinfra |
homepage | https://pyinfra.com |
language | Python |
size (curr.) | 17820 kB |
stars (curr.) | 740 |
created | 2014-10-19 |
license | MIT License |
pyinfra automates/provisions/manages/deploys 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 depending on the target.
- ❗️ 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/Mech & Ansible out of the box.
When you run pyinfra you’ll see something like (non animated version):
Quickstart
pyinfra can be installed via pip:
pip install pyinfra
Now you can execute commands & operations over SSH:
# Execute an arbitrary shell command
pyinfra my-server.net exec -- echo "hello world"
# Install iftop apt package if not present
pyinfra my-server.net apt.packages iftop sudo=true update=true
These can then be saved to a deploy file, let’s call it deploy.py
:
from pyinfra.operations import apt
apt.packages(
{'Install iftop'},
'iftop',
sudo=True,
update=True,
)
And executed with:
pyinfra my-server.net deploy.py
or
pyinfra @docker/ubuntu deploy.py