Pyinfra: alat otomatisasi infrastruktur berbasis Python
(pyinfra.com)- 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.pylalu 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
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.
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.
Opini Hacker News
Ringkasan: