Fabric: Tambahkan Konteks Tunneling ke Fab

Dibuat pada 19 Agu 2011  ·  13Komentar  ·  Sumber: fabric/fabric

Keterangan

Ini akan sangat membantu saya karena akan membuatnya sangat mudah
untuk misalnya terhubung ke server MySQL jarak jauh menggunakan baris perintah saya
klien MySQL.

Kita bisa menggunakan pernyataan konteks "dengan", seperti:

with tunnel(local=3307, remote=3306):
    local('mysql --port=3007 --host=localhost' mydb < db/dbdump.sql')

Ini akan menghilangkan kebutuhan untuk mengunggah file dump mysql ke server
hanya untuk dapat menjalankan impor.

Aplikasi lain bisa untuk mengelola server web Cherokee.

Admin web Cherokee secara default hanya dapat diakses dari server yang
itu berjalan. Jadi Anda ingin mengakses admin Anda harus terowongan
ke server dan mengakses antarmuka admin menggunakan port lokal.
Ini juga dapat disederhanakan dengan fungsi ini.

with tunnel(local=9090, remote=9090):
   sudo('cherokee-admin')
   prompt('Stop cherokee admin?')

Baris terakhir itu akan membuat terowongan tetap terbuka sampai ditutup dengan memberikan masukan.


Awalnya dikirimkan oleh Taras Mankovski ( tarasm ) pada 02-11-2009 pukul 09:30 EST

Hubungan

  • Terkait dengan #38: Menerapkan tunneling
Feature Network

Komentar yang paling membantu

939 masih dalam keranjang rilis, saya baru saja memasukkannya dari 1.11 mendatang karena saya perlu memotong _beberapa_ hal, tetapi itu akan mendapatkan prioritas untuk siklus fitur berikutnya. (Dan sepertinya #1218 menggantikan #939 jadi saya mungkin akan menggabungkannya & mengkredit #939 di changelog.)

Semua 13 komentar

Jeff Forcier ( bitprophet ) memposting:


(deskripsi yang dimodifikasi sehingga blok kode diindentasi :))


pada 02-11-2009 pukul 09:35 EST

Akan luar biasa jika terowongan juga mendukung sebaliknya. Artinya mendengarkan pada jarak jauh dan meneruskannya ke localhost/host lain yang tersedia secara lokal : port.

@munhitsu Saya tidak yakin bagaimana kasus penggunaan untuk Fabric secara khusus. Bisakah Anda menguraikan?

Bayangkan pengaturan DMZ yang tidak memiliki akses http/proxy keluar.
Seluruh penyebaran melewati kain.

Dalam kasus seperti itu, kita dapat menggunakan fabric untuk melakukan tunnel proxy lokal melalui ssh, agar dapat diakses sementara untuk host yang baru saja disediakan di DMZ. Saat ini saya sedang membuka terowongan ssh terpisah di konsol kedua, sehingga fabric berfungsi dalam "konteks" terowongan ini.

contoh penggunaan:

with rev_tunnel(local=8080, remote=8080):
    sudo("http_proxy='http://localhost:8080' apt-get install -y puppet")

OK, jadi ini adalah pengaturan terowongan terbalik yang cukup standar, saya kira, dan keinginan Anda kembali: Fabric adalah untuk menangani melakukan terowongan vs Anda harus menjalankan misalnya local(ssh -R ...) .

Saya bolak-balik tentang apakah ini benar-benar layak untuk masuk ke inti, tetapi itu benar-benar masuk akal untuk didukung di Fabric yang tepat; solusi lainnya adalah peretasan (misalnya beberapa utas atau subproses yang menjalankan ssh -- bagaimana melakukannya dengan baik, pastikan itu mati ketika Fab melakukannya, dll) dan saya melihat validitas kasus penggunaan (berbagi lokal sumber daya dengan ujung jarak jauh selama eksekusi.)

Penghalang jalan utama adalah saya belum yakin lib SSH mendukung ini; kita harus mencari tahu dan seseorang harus menerapkannya jika tidak. (Namun, saya pikir itu akan menjadi tambahan yang bagus untuk perpustakaan tersebut, vs memperkuat solusi ssh -R yang disebutkan di atas.)

EDIT: #38 membahas implementasi dan patching dan semacamnya. Mungkin yang terbaik untuk benar-benar menutup ini dan cukup perhatikan di sana bahwa ketika diterapkan, itu harus mungkin untuk memicu dengan manajer konteks jika memungkinkan.

Saya sepenuhnya setuju bahwa menerapkannya sehingga kita memasuki, meninggalkan konteks, atau bahkan lebih buruk lagi, beberapa tingkat konteks itu rumit.

Mengenai EDIT: Apa pun yang membuat kami lebih dekat untuk memiliki fungsi ini adalah ide yang bagus.

Untuk saat ini saya akan membiarkan ini terbuka, hanya untuk menjaga agar semuanya tetap terperinci. Ditetapkan ke 1.4 jadi saya tidak lupa. Kemungkinan saya akan mencoba untuk menjatuhkan ini dengan benar saat saya melakukan #38. Akan memperbarui di sini ketika itu di master, terima kasih.

Ini sebenarnya tidak terkait dengan #38 seperti yang saya kira, karena perubahannya semata-mata tentang gateway lalu lintas SSH itu sendiri, bukan tunneling port tambahan melalui koneksi SSH. Itu akan membutuhkan solusi yang berbeda (atau setidaknya, tambahan). Punting untuk saat ini, maaf :) (Artinya: masih buka, hanya tidak akan tiba di 1,5.)

Saya baru-baru ini membutuhkan fungsionalitas ini untuk menyinkronkan ke server rsync jarak jauh yang portnya tidak dapat dijangkau secara langsung dan menemukan bahwa kode demo forward.py paramiko memiliki kode sampel yang dapat saya gunakan, jadi saya menemukan solusi yang bekerja dengan baik untuk saya dan saya mengirimkannya sebagai tambalan untuk forward.py di sini: https://github.com/paramiko/paramiko/pull/504/

Kita bisa menambahkan ForwardServer dari patch itu dan memiliki local_tunnel() yang hanya mengembalikan sebuah instance dari ForwardServer . Sesuai rekomendasi dari @bitprophet pada permintaan tarik, saya akan mengerjakan tambalan untuk Fabric.

Saya sebenarnya tidak menyadarinya, tetapi sudah ada patch untuk local_tunnel() , meskipun saya tidak sepenuhnya yakin tentang statusnya. Apa yang harus saya lakukan?

@haridsv Jika Anda bisa, mengujinya & menyebutkan bahwa Anda berhasil menggunakannya, pada tambalan itu (#939), akan membantu, jika tidak sabar saja :) terima kasih!

Apakah ada rencana untuk mengatasi masalah ini? Ada dua permintaan tarik luar biasa yang bersama-sama menyelesaikan ini, tetapi belum ditinjau? Adakah cara kita bisa mempercepat ini?

939, #1218

Saya telah menggunakan kode di #1218 tanpa masalah.

939 masih dalam keranjang rilis, saya baru saja memasukkannya dari 1.11 mendatang karena saya perlu memotong _beberapa_ hal, tetapi itu akan mendapatkan prioritas untuk siklus fitur berikutnya. (Dan sepertinya #1218 menggantikan #939 jadi saya mungkin akan menggabungkannya & mengkredit #939 di changelog.)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

SamuelMarks picture SamuelMarks  ·  3Komentar

shadyabhi picture shadyabhi  ·  5Komentar

bitprophet picture bitprophet  ·  4Komentar

jmcgrath207 picture jmcgrath207  ·  5Komentar

peteruhnak picture peteruhnak  ·  4Komentar