[Python]fabricでトンネルする
最近 fabric を使っていろいろ作業しています。
で、踏み台サーバごしにアクセスする必要があるマシンがあるのですが、fabricの中でトンネルを作って作業したいなと思いました、ちょっと調べてみると https://gist.github.com/856179 にcodeがありましたので、それを利用させてもらいました。ありがとうございます。
具体的には以下のような感じにしました。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import run, env
# 事前にtunnel.pyを https://gist.github.com/856179 から入手
from tunnel import make_tunnel
def staging():
env.hosts = ['example1']
def get_hostname():
with make_tunnel('your_tunnel_host_name') as t:
run('hostname')
なお、env.host_stringを使っている場合は、tunnelの中でenv.host_stringを127.0.0.1に書き換えてしまいますので、withの前で別のところにとっておきましょう。