20 puan yazan GN⁺ 2024-05-01 | 3 yorum | WhatsApp'ta paylaş
  • 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 pyinfra komutuyla 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.py gibi 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

 
savvykang 2024-05-02

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.

 
xguru 2024-05-01

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.

 
GN⁺ 2024-05-01
Hacker News görüşleri

Özet:

  • Ansible hedef sistemde bir Python yorumlayıcısı gerektirirken, Pyinfra için sadece shell yeterli. Pyinfra hak ettiği değeri görmeyen bir yazılım.
  • Ansible iyi, ancak sonunda YAML dizgeleri içinde Python yazmış oluyorsunuz. Öyleyse en baştan doğrudan Python kullanmak daha iyi.
  • Pyinfra geliştiricisi yorum bıraktı ve şu anda beta olan v3'ün kullanılmasını önerdi. Kararlı olduğunu ve resmi sürüme hazırlandığını söyledi.
  • Pyinfra ile ilgili geçmişteki birkaç HN gönderisine bağlantı verilmiş.
  • Bir kullanıcı Ansible'dan Pyinfra'ya geçtiğini ve Pyinfra'nın çok daha temiz olduğunu söyledi. Python olmayan Fedora CoreOS ortamlarında da Pyinfra'yı kullanabilmesinin iyi olduğunu belirtti.
  • Puppet'ın bu alandaki en uygun araç olduğu yönünde bir görüş de var. Basit, ama gerektiğinde bir programlama dili olarak da işlev sunuyor. Ancak kullanılabilirlik açısından iyileştirme gerekiyor.
  • CM (yapılandırma yönetimi) araçlarını kullanmak çok zor olabilir. Uzmanlar bile bakım maliyetlerinin yüksek olduğu konusunda hemfikir. Bunların container'larla daha sıkı entegre olacak yönde gelişmesi gerekiyor.
  • Python, altyapı yönetimi için uygun olmayabilir. İkili derleme, paket yeniden üretilebilirliği ve statik tiplerin olmaması gibi sınırlamaları var.
  • Pyinfra, Docker ve Tailscale'i birleştirerek servisleri kolayca dağıtma yöntemi tanıtılıyor. Geçmişte Kubernetes kullanılmış olurdu, ama bu fazla ağır ve hata ayıklaması da zor.
  • Pyinfra sayesinde Ansible'ın kronik sorunlarından kaçınılabildi. Pyinfra'da envanter ve değişkenler Python betikleriyle esnek biçimde tanımlanabildiği için kullanışlı.