- Python का उपयोग करके infrastructure को automate करने वाला टूल
- एक single server से लेकर हज़ारों servers तक तेज़ी से scale किया जा सकता है
- ad-hoc command execution, service deployment, configuration management आदि के लिए उपयुक्त
pyinfra का उपयोग क्यों करें
- हज़ारों targets पर predictable performance के साथ बहुत तेज़ execution संभव
- real-time stdin/stdout/stderr output(
-vvv) के साथ तुरंत debugging संभव - बदलाव लागू करने से पहले diff और dry run को support करके idempotency प्रदान करता है (Idempotent operations)
- पूरे Python package ecosystem के माध्यम से extensibility प्रदान करता है
- SSH सक्षम किसी भी device पर agent के बिना run किया जा सकता है
- Docker, Terraform, Vagrant जैसे connectors के साथ integrate होता है
Quick Start
pip install pyinfraकमांड से pyinfra install करें- SSH के ज़रिए command run की जा सकती है
pyinfra my-server.net exec -- echo "hello world"
- Docker, local machine और अन्य connector targets निर्दिष्ट किए जा सकते हैं
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- command execution के अलावा operations का उपयोग करके state define की जा सकती है
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- इसे
deploy.pyजैसी Python file में save करके run किया जा सकता है - inventory, operations और Python code को मिलाकर सब कुछ deploy किया जा सकता है
अधिक जानकारी के लिए getting started guide, operations usage guide, inventory और data usage, global arguments और CLI usage देखें, या documented examples देखें.
GN⁺ की राय
- deployment tool के रूप में safety और control महत्वपूर्ण होते हैं, लेकिन यह infrastructure management tool की functionality पर केंद्रित है, इसलिए deployment process में समस्याएँ आने की संभावना हो सकती है
- pyinfra स्वयं deployment best practices को enforce नहीं करता, इसलिए टीम के भीतर अलग से rules तय करके उनका प्रबंधन करना होगा
- चूँकि यह Python भाषा का उपयोग करता है, इसलिए Python ecosystem का लाभ लिया जा सकता है और यह developers के लिए familiar है, लेकिन दूसरे सामान्य deployment tools की तुलना में इसका entry barrier मौजूद है
- यह simple और flexible deployment scenarios के लिए उपयुक्त टूल लगता है, जबकि जटिल enterprise-grade deployments के लिए Ansible, Puppet जैसे mature tools अधिक उपयुक्त हो सकते हैं
- Terraform या Pulumi जैसे IaC tools के साथ इसका integration अच्छा है, लेकिन यह सवाल बना रहता है कि क्या ऐसे बहुत से काम हैं जो केवल इनके साथ संभव नहीं हैं
3 टिप्पणियां
मेरा मानना है कि Ansible में YAML के अलावा playbook परिभाषित करने का तरीका होना चाहिए। Ansible Python की functionality को jinja filters के रूप में फिर से implement करके उपलब्ध करा रहा है ताकि data processing की जा सके, और मुझे यह बहुत बड़ी बर्बादी लगती है। अगर playbook fact का schema task के input से मेल खाता हो तो कोई बात नहीं, लेकिन व्यवहारिक रूप से ऐसे हालात अधिक होते हैं जहाँ बीच में data processing करना अनिवार्य होता है। Data processing के लिए Jinja का इस्तेमाल करना भी शायद एक short-sighted तकनीकी फैसला था।
pyinfra - Python-आधारित infrastructure automation tool
पहले जब 1.0 रिलीज़ हुआ था तब मैंने इसे एक बार साझा किया था, और तब से इसमें लगातार सक्रिय अपडेट होते रहे हैं.
अभी यह 2.92 वर्ज़न पर है, और वर्तमान में beta में मौजूद 3.0 जल्द ही रिलीज़ होने वाला है.
Hacker News की राय
सारांश: