20 पॉइंट द्वारा GN⁺ 2024-05-01 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
savvykang 2024-05-02

मेरा मानना है कि Ansible में YAML के अलावा playbook परिभाषित करने का तरीका होना चाहिए। Ansible Python की functionality को jinja filters के रूप में फिर से implement करके उपलब्ध करा रहा है ताकि data processing की जा सके, और मुझे यह बहुत बड़ी बर्बादी लगती है। अगर playbook fact का schema task के input से मेल खाता हो तो कोई बात नहीं, लेकिन व्यवहारिक रूप से ऐसे हालात अधिक होते हैं जहाँ बीच में data processing करना अनिवार्य होता है। Data processing के लिए Jinja का इस्तेमाल करना भी शायद एक short-sighted तकनीकी फैसला था।

 
xguru 2024-05-01

pyinfra - Python-आधारित infrastructure automation tool

पहले जब 1.0 रिलीज़ हुआ था तब मैंने इसे एक बार साझा किया था, और तब से इसमें लगातार सक्रिय अपडेट होते रहे हैं.
अभी यह 2.92 वर्ज़न पर है, और वर्तमान में beta में मौजूद 3.0 जल्द ही रिलीज़ होने वाला है.

 
GN⁺ 2024-05-01
Hacker News की राय

सारांश:

  • Ansible में target system पर Python interpreter की ज़रूरत होती है, लेकिन Pyinfra के लिए सिर्फ shell काफ़ी है। Pyinfra एक कम आंका गया software है.
  • Ansible अच्छा है, लेकिन अंत में आप YAML strings में Python लिखते हैं। ऐसे में शुरुआत से ही सीधे Python इस्तेमाल करना बेहतर है.
  • Pyinfra के एक developer ने comment किया कि मौजूदा beta v3 इस्तेमाल करने की सलाह दी जाती है। यह stable है और official release की तैयारी में है.
  • Pyinfra से संबंधित कई पुराने HN posts के links दिए गए हैं.
  • एक user ने Ansible से Pyinfra पर switch किया और कहा कि Pyinfra कहीं ज़्यादा साफ़-सुथरा है। Python के बिना Fedora CoreOS environment में भी Pyinfra इस्तेमाल कर पाना उन्हें अच्छा लगा.
  • यह राय भी आई कि Puppet इस क्षेत्र में सबसे उपयुक्त tool है। यह simple है और ज़रूरत पड़ने पर programming language जैसी capabilities भी देता है। हालांकि usability के मामले में इसमें सुधार की ज़रूरत है.
  • CM (configuration management) tools का इस्तेमाल बहुत कठिन हो सकता है। Experts भी मानते हैं कि maintenance cost काफ़ी ऊँची होती है। इन्हें containers के साथ और ज़्यादा tightly integrated दिशा में आगे बढ़ना चाहिए.
  • Python शायद infrastructure management के लिए सबसे उपयुक्त न हो। Binary builds, package reproducibility, और static typing की कमी जैसी सीमाएँ हैं.
  • Pyinfra, Docker, और Tailscale को मिलाकर आसानी से services deploy करने का एक तरीका बताया गया है। पहले शायद Kubernetes इस्तेमाल किया जाता, लेकिन वह बहुत भारी है और debug करना भी मुश्किल है.
  • Pyinfra की वजह से Ansible की पुरानी समस्याओं से बचा जा सका। Pyinfra में Python scripts के ज़रिए inventory और variables को flexibly define किया जा सकता है, जो काफ़ी सुविधाजनक है.