20 poin oleh GN⁺ 2024-05-01 | 3 komentar | Bagikan ke WhatsApp
  • Alat untuk mengotomatisasi infrastruktur menggunakan Python
  • Dapat berkembang cepat dari satu server hingga ribuan server
  • Cocok untuk menjalankan perintah ad-hoc, deployment layanan, dan manajemen konfigurasi

Mengapa menggunakan pyinfra

  • Dapat berjalan sangat cepat dengan performa yang dapat diprediksi terhadap ribuan target
  • Debugging langsung dimungkinkan dengan output stdin/stdout/stderr real-time (-vvv)
  • Menyediakan idempotensi dengan mendukung diff dan dry run sebelum menerapkan perubahan (Idempotent operations)
  • Menyediakan ekstensibilitas melalui seluruh ekosistem paket Python
  • Dapat dijalankan tanpa agen di semua perangkat yang mendukung SSH
  • Terintegrasi dengan konektor seperti Docker, Terraform, dan Vagrant

Mulai cepat

  • Instal pyinfra dengan perintah pip install pyinfra
  • Dapat menjalankan perintah melalui SSH
    • pyinfra my-server.net exec -- echo "hello world"
  • Dapat menargetkan Docker, mesin lokal, dan konektor lainnya
    • pyinfra @docker/ubuntu exec -- echo "Hello world"
    • pyinfra @local exec -- echo "Hello world"
  • Selain menjalankan perintah, Anda juga dapat mendefinisikan status menggunakan operasi
    • pyinfra @docker/ubuntu apt.packages iftop update=true _sudo=true
  • Ini dapat disimpan sebagai file Python seperti deploy.py lalu dijalankan
  • Dengan menggabungkan inventaris, operasi, dan kode Python, Anda dapat melakukan deployment untuk semuanya

Untuk detail lebih lanjut, lihat panduan memulai, panduan penggunaan operasi, penggunaan inventaris dan data, argumen global serta penggunaan CLI, atau periksa contoh-contoh yang telah didokumentasikan.

Opini GN⁺

  • Sebagai alat deployment, keamanan dan kendali itu penting, tetapi karena fokusnya lebih pada fungsi sebagai alat manajemen infrastruktur, ada kemungkinan masalah muncul dalam proses deployment
  • Karena pyinfra sendiri tidak memaksakan best practice deployment, tim perlu menetapkan dan mengelola aturan secara terpisah
  • Menggunakan Python sebagai bahasa memberi keuntungan karena bisa memanfaatkan ekosistem Python dan terasa akrab bagi developer, tetapi dibandingkan alat deployment umum lainnya, hambatan masuknya bisa lebih tinggi
  • Ini tampak sebagai alat yang cocok untuk skenario deployment yang sederhana dan fleksibel, sementara untuk deployment enterprise yang kompleks, alat yang lebih matang seperti Ansible atau Puppet mungkin lebih sesuai
  • Integrasi dengan alat IaC seperti Terraform atau Pulumi memang bagus, tetapi tetap muncul pertanyaan apakah ada banyak hal yang tidak bisa dilakukan hanya dengan alat-alat tersebut

3 komentar

 
savvykang 2024-05-02

Saya merasa Ansible memerlukan cara lain untuk mendefinisikan playbook selain YAML. Ansible menyediakan ulang fitur Python sebagai filter Jinja untuk pemrosesan data, dan menurut saya itu pemborosan yang sangat besar. Mungkin tidak masalah jika skema fact pada playbook sesuai dengan input task, tetapi dalam kenyataannya jauh lebih sering ada situasi di mana pemrosesan data perantara tidak bisa dihindari. Saya juga merasa keputusan teknis untuk menggunakan Jinja dalam pemrosesan data adalah keputusan yang agak berpandangan pendek.

 
xguru 2024-05-01

pyinfra - alat otomatisasi infrastruktur berbasis Python

Dulu saya sempat mempostingnya sekali saat rilis 1.0, tetapi pembaruannya terus berlanjut dengan aktif.
Sekarang versinya 2.92, dan 3.0 yang saat ini masih beta dijadwalkan segera dirilis.

 
GN⁺ 2024-05-01
Opini Hacker News

Ringkasan:

  • Ansible memerlukan interpreter Python di sistem target, tetapi Pyinfra hanya butuh shell. Pyinfra adalah perangkat lunak yang kurang dihargai.
  • Ansible memang bagus, tetapi pada akhirnya Anda menulis Python dalam bentuk string YAML. Kalau begitu, lebih baik langsung menggunakan Python sejak awal.
  • Pengembang Pyinfra meninggalkan komentar dan menyarankan penggunaan v3 yang saat ini masih beta. Versi tersebut stabil dan sedang dipersiapkan untuk rilis resmi.
  • Ada beberapa tautan ke postingan HN lama terkait Pyinfra.
  • Seorang pengguna beralih dari Ansible ke Pyinfra dan menilai Pyinfra jauh lebih rapi. Ia juga menyukai bahwa Pyinfra bisa digunakan di lingkungan Fedora CoreOS yang tidak memiliki Python.
  • Ada juga pendapat bahwa Puppet adalah alat yang paling tepat di bidang ini. Sederhana, tetapi tetap menyediakan kemampuan sebagai bahasa pemrograman bila diperlukan. Namun, dari sisi kegunaan masih perlu ditingkatkan.
  • Menggunakan alat CM (manajemen konfigurasi) bisa sangat sulit. Bahkan para ahli pun setuju bahwa biaya pemeliharaannya tinggi. Alat-alat ini perlu berkembang ke arah integrasi yang lebih erat dengan container.
  • Python mungkin tidak cocok untuk manajemen infrastruktur. Ada keterbatasan seperti build biner, reproduktibilitas paket, dan tidak adanya static typing.
  • Diperkenalkan cara sederhana untuk menerapkan layanan dengan menggabungkan Pyinfra, Docker, dan Tailscale. Dulu mungkin akan memakai Kubernetes, tetapi itu terlalu berlebihan dan juga sulit di-debug.
  • Berkat Pyinfra, berbagai masalah kronis Ansible bisa dihindari. Pyinfra memudahkan karena inventaris dan variabel dapat didefinisikan secara fleksibel dengan skrip Python.