FabricでSSHをトンネルする
今年はブログをちゃんと書くぞ!とおもってはや2ヶ月経ちました。その間、書こう書こうと途中まで書いて放置した記事が累々と横たわっているのですが、私はわかった。途中まで書いてもアップするぞ! そして酒のんでブログ書き始めると途中で眠くなるのでやめるぞ!
Fabricは良いですね。
shibatsの人がFabricネタをReblogしたりしていましたが、Fabricは便利ですね。
Fabricのきれいな書き方はIan Lewisさんの記事が参考になります。
rsyncしたい
Deployにrsyncを使う事はよくあると思います。Fabricにもrsync用のツールがありますが、もうちょっと細かくオプションを追加したい場合はlocal(...)で直接rsyncを叩いてもよいでしょう。
踏み出し越しにrsyncしたい。
システムが大きくなってくると、踏み台サーバ越しに向こう側のサーバにrsyncしたい。なんてことになってくると思います。 一旦踏み台サーバにDeployしてからそこから各サーバに配る方法もありますが、うちではまだサーバが数台なので、踏み台サーバにsshでトンネルを作ってトンネル越しにrsyncしています。
fabfile.py側からは以下のようにします。:
# 踏み台サーバのhoststring
env.tunnel_hoststring = 'admin@192.168.12.34:10022'
# 証明書とか必要であれば
#env.steppingstone = '-e "ssh -i %s"' % env.key_filename
with tunnel() as t:
...
とりあえずこんな感じでざっくり動いてるのでイェイ!