- Ein Tool zur Automatisierung von Infrastruktur mit Python
- Schnell skalierbar von einem einzelnen Server bis zu Tausenden von Servern
- Geeignet für die Ausführung ad-hoc Befehle, die Bereitstellung von Services und Konfigurationsmanagement
Warum man pyinfra verwenden sollte
- Ultraschnelle Ausführung mit vorhersagbarer Performance für Tausende von Zielen
- Sofortiges Debugging durch Echtzeit-Ausgabe von stdin/stdout/stderr (
-vvv) - Unterstützt Diff und Dry Run vor dem Anwenden von Änderungen und bietet damit Idempotenz (idempotent operations)
- Erweiterbar durch das gesamte Python-Paket-Ökosystem
- Agentenlose Ausführung auf jedem Gerät, das SSH unterstützt
- Integriert mit Konnektoren wie Docker, Terraform und Vagrant
Schnellstart
- Installation von pyinfra mit dem Befehl
pip install pyinfra - Ausführung von Befehlen über SSH möglich
pyinfra my-server.net exec -- echo "hello world"
- Ziele wie Docker, lokale Maschinen und andere Konnektoren können angegeben werden
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- Zusätzlich zur Befehlsausführung lassen sich mit Operations Zustände definieren
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- Dies kann in einer Python-Datei wie
deploy.pygespeichert und ausgeführt werden - Durch die Kombination von Inventory, Operations und Python-Code lässt sich alles bereitstellen
Weitere Informationen finden sich im Getting-Started-Guide, im Guide zur Verwendung von Operations, zur Nutzung von Inventory und Daten, zu globalen Argumenten und zur CLI oder in den dokumentierten Beispielen.
Meinung von GN⁺
- Bei Deployment-Tools sind Sicherheit und Kontrolle wichtig, doch da der Fokus eher auf den Funktionen als Infrastruktur-Management-Tool liegt, können im Deployment-Prozess Probleme entstehen
- pyinfra selbst erzwingt keine Deployment-Best-Practices, daher müssen Teams eigene Regeln festlegen und pflegen
- Die Verwendung von Python als Sprache ist ein Vorteil, weil das Python-Ökosystem genutzt werden kann und es für Entwickler vertraut ist, bringt aber im Vergleich zu anderen gängigen Deployment-Tools eine höhere Einstiegshürde mit sich
- Es wirkt wie ein geeignetes Tool für einfache und flexible Deployment-Szenarien; für komplexe Enterprise-Deployments könnten ausgereiftere Tools wie Ansible oder Puppet besser geeignet sein
- Die Integration mit IaC-Tools wie Terraform oder Pulumi ist positiv, allerdings bleibt fraglich, ob es viele Aufgaben gibt, die nicht bereits allein mit diesen lösbar sind
3 Kommentare
Ich denke, dass Ansible eine andere Möglichkeit braucht, Playbooks außer in YAML zu definieren. Dass Ansible für die Datenverarbeitung Python-Funktionen als Jinja-Filter erneut implementiert und bereitstellt, halte ich für eine enorme Verschwendung. Wenn das Schema der Playbook-Facts mit den Eingaben der Tasks übereinstimmt, ist das vielleicht kein Problem, aber in der Realität sind Zwischenschritte zur Datenverarbeitung zwangsläufig viel häufiger. Auch die Entscheidung, Jinja für die Datenverarbeitung zu verwenden, wirkt auf mich wie eine kurzsichtige technische Entscheidung.
pyinfra – ein Python-basiertes Tool zur Infrastrukturautomatisierung
Ich hatte es schon einmal gepostet, als damals Version 1.0 veröffentlicht wurde, aber es wird weiterhin sehr aktiv aktualisiert.
Aktuell ist es bei Version 2.92, und die derzeitige Beta von 3.0 soll bald veröffentlicht werden.
Hacker-News-Kommentare
Zusammenfassung: