Pyinfra: Python ile altyapı otomasyon aracı
(pyinfra.com)- Python kullanarak altyapıyı otomatikleştiren bir araç
- Tek bir sunucudan binlerce sunucuya kadar hızla ölçeklenebilir
- Geçici komut çalıştırma, servis dağıtımı ve yapılandırma yönetimi için uygundur
Neden pyinfra kullanmalısınız
- Binlerce hedefte öngörülebilir performansla çok yüksek hızda çalışabilir
- Gerçek zamanlı stdin/stdout/stderr çıktısı (
-vvv) ile anında hata ayıklama yapılabilir - Değişiklikleri uygulamadan önce diff ve dry run desteği sunarak idempotent işlemler sağlar
- Tüm Python paket ekosistemiyle genişletilebilirlik sunar
- SSH erişimi olan her cihazda agentsız çalışabilir
- Docker, Terraform, Vagrant gibi bağlayıcılarla entegre olur
Hızlı başlangıç
pip install pyinfrakomutuyla pyinfra'yı kurun- SSH üzerinden komut çalıştırabilirsiniz
pyinfra my-server.net exec -- echo "hello world"
- Docker, yerel makine ve diğer bağlayıcı hedefleri belirtilebilir
pyinfra @docker/ubuntu exec -- echo "Hello world"pyinfra @local exec -- echo "Hello world"
- Komut çalıştırmanın yanı sıra, görevler kullanılarak durum tanımlanabilir
pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
- Bunu
deploy.pygibi bir Python dosyasına kaydedip çalıştırabilirsiniz - Envanter, görevler ve Python kodunu birleştirerek her şeyi dağıtabilirsiniz
Daha fazla bilgi için başlangıç kılavuzuna, görev kullanım kılavuzuna, envanter ve veri kullanımına, genel argümanlar ve CLI kullanımına bakın ya da belgelenmiş örnekleri inceleyin.
GN⁺ Görüşü
- Dağıtım aracı olarak güvenlik ve kontrol önemlidir; ancak bu araç daha çok altyapı yönetimi işlevlerine odaklandığı için dağıtım sürecinde sorun çıkma ihtimali olabilir
- pyinfra kendi başına dağıtım için en iyi pratikleri zorunlu kılmadığından, ekip içinde ayrıca kurallar belirlenip yönetilmelidir
- Dil olarak Python kullanması, Python ekosisteminden yararlanabilmesi ve geliştiricilere tanıdık gelmesi avantajdır; ancak diğer yaygın dağıtım araçlarına göre giriş eşiği vardır
- Basit ve esnek dağıtım senaryoları için uygun bir araç gibi görünüyor; karmaşık kurumsal ölçekli dağıtımlar içinse Ansible, Puppet gibi daha olgun araçlar daha uygun olabilir
- Terraform veya Pulumi gibi IaC araçlarıyla entegre olması iyi; ancak yalnızca bunlarla yapılamayan işlerin gerçekten ne kadar fazla olduğu soru işareti
3 yorum
Ansible için YAML dışında playbook tanımlama yöntemlerine ihtiyaç olduğunu düşünüyorum. Ansible'ın veri işleme için Python işlevlerini jinja filtreleri olarak yeniden uygulayıp sunmasını büyük bir israf olarak görüyorum. Playbook fact şemasının task girdisiyle örtüştüğü durumlarda sorun olmayabilir, ancak gerçek hayatta ara veri işlemenin kaçınılmaz olduğu durumlar çok daha yaygın. Veri işleme için Jinja kullanılması da biraz kısa vadeli bir teknik karar gibi görünüyor.
pyinfra - Python tabanlı bir altyapı otomasyon aracı
Daha önce 1.0 sürümü çıktığında bunu bir kez paylaşmıştım, ancak o zamandan beri aktif olarak güncellenmeye devam ediyor.
Şu anda 2.92 sürümünde ve hâlen beta olan 3.0 sürümünün de yakında çıkması planlanıyor.
Hacker News görüşleri
Özet: